2014-10-02 14 views
6

Chcę zwiększyć cień obrazu podczas przeciągania startu Utworzono niestandardowy dragshadowbuilder i zwiększono dwukrotnie rozmiar, ale nic się nie stało.Rozmiar cienia dragshadowbuildeta androida

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); 

}} 

Jaki jest tego powód?

Odpowiedz

14

Cóż, nie jest to tak jasne w dokumentacji. Używam danego konstruktora, aby zmniejszyć rozmiar, wystarczy zmienić dzielenie przez pomnożenie dla swojego stanu;

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); 
     } 

    } 
Powiązane problemy