2014-10-02 17 views
6

Desidero aumentare l'ombreggiatura dell'immagine durante il trascinamento iniziale Ho creato dragshadowbuilder personalizzato e aumentato la dimensione doppia, ma non è successo nulla.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); 

}} 

Qual è il motivo?

risposta

14

Bene, questo non è così chiaro nella documentazione. Sto usando il builder dato per ridurre le dimensioni, basta cambiare la divisione in base alla tua condizione;

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

    }