Android 自定义控件--可拖动的控件

2019-01-07  本文已影响0人  大川的川

有时候我们看到部分APP的首页面有浮层控件,更重要的是还可以拖动,怎么实现的呢?带着疑问和不解,我们一起来揭开神秘的她面纱~~

1分析功能

可拖动,实现的步骤是点击,拖动,释放,那么很清晰了,此功能和触摸事件有关!

2实现自定义的View

public class CustomView extends View {
    private int moveX;
    public CustomView(Context context) {
        super(context);
    }

    public CustomView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int x=(int)event.getX();
        int y=(int)event.getY();

        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                moveX=x;
                break;
            case MotionEvent.ACTION_MOVE:
                //计算移动的距离
                int offsetX=x-moveX;
                int offsetY=y-moveX;
                //调用layout方法来重新放置它的位置
                offsetLeftAndRight(offsetX);
                offsetTopAndBottom(offsetY);
                break;
        }
        return true;
    }
}

onTouchEvent中根据触摸事件计算出View层的时时坐标

好了,上效果吧:

可移动的CustomView.gif
上一篇下一篇

猜你喜欢

热点阅读