2014-10-02 11 views
6

Tôi muốn tăng độ bóng của hình ảnh khi kéo bắt đầu Tôi đã tạo tùy chỉnh dragshadowbuilder và tăng kích thước gấp đôi, nhưng không có gì xảy ra.android dragshadowbuilder shadow size

public class ImageDragShadowBuilder extends View.DragShadowBuilder { 

public ImageDragShadowBuilder(View v) { 
    super(v); 
} 


@Override 
public void onProvideShadowMetrics(Point shadowSize, Point touchPoint) { 
    shadowSize.set(getView().getWidth()*2, getView().getHeight()*2); 
    touchPoint.set(getView().getWidth()/2, getView().getHeight()/2); 

}} 

Lý do là gì?

Trả lời

14

Vâng, điều này không rõ ràng trong tài liệu. Tôi đang sử dụng builder cho kích thước giảm, bạn chỉ cần thay đổi phân chia bằng cách nhân cho tình trạng của bạn;

private static class MyDragShadowBuilder extends View.DragShadowBuilder { 

    private Point mScaleFactor; 
     // Defines the constructor for myDragShadowBuilder 
     public MyDragShadowBuilder(View v) { 

      // Stores the View parameter passed to myDragShadowBuilder. 
      super(v); 

     } 

     // Defines a callback that sends the drag shadow dimensions and touch point back to the 
     // system. 
     @Override 
     public void onProvideShadowMetrics (Point size, Point touch) { 
      // Defines local variables 
      int width; 
      int height; 

      // Sets the width of the shadow to half the width of the original View 
      width = getView().getWidth()/2; 

      // Sets the height of the shadow to half the height of the original View 
      height = getView().getHeight()/2; 

      // Sets the size parameter's width and height values. These get back to the system 
      // through the size parameter. 
      size.set(width, height); 
      // Sets size parameter to member that will be used for scaling shadow image. 
      mScaleFactor = size; 

      // Sets the touch point's position to be in the middle of the drag shadow 
      touch.set(width/2, height/2); 
     } 

     @Override 
     public void onDrawShadow(Canvas canvas) { 

      // Draws the ColorDrawable in the Canvas passed in from the system. 
      canvas.scale(mScaleFactor.x/(float)getView().getWidth(), mScaleFactor.y/(float)getView().getHeight()); 
      getView().draw(canvas); 
     } 

    }