美文网首页
Android 自定义控件--可拖动的控件

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

作者: 大川的川 | 来源:发表于2019-01-07 16:29 被阅读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

    相关文章

      网友评论

          本文标题:Android 自定义控件--可拖动的控件

          本文链接:https://www.haomeiwen.com/subject/sziurqtx.html