android dragshadowbuilder shadow size

為{幸葍}努か 提交于 2020-01-02 03:25:32

问题


I try to increase shadow of image when dragging start
I created custom dragshadowbuilder and increase size double, but nothing happend.

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

}}

What is the reason?


回答1:


Well, this is not so clear in documentation. I'm using given builder for decrease size you just need to change division by multiply for your condition ;

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

    }


来源:https://stackoverflow.com/questions/26163100/android-dragshadowbuilder-shadow-size

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!