拖动开始时我尝试增加图像的阴影
我创建了自定义dragshadowbuilder并增加了两倍的大小,但没有任何事情发生.
我创建了自定义dragshadowbuilder并增加了两倍的大小,但没有任何事情发生.
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); }}
是什么原因?
解决方法
嗯,这在文档中并不是那么清楚.我正在使用给定的构建器来减小大小,你只需要通过乘以你的条件来改变除法;
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); } }