美文网首页我爱编程
Android 制作可拖动控件。并且不会因为布局的改动而复位2

Android 制作可拖动控件。并且不会因为布局的改动而复位2

作者: Colin高宏杰 | 来源:发表于2018-08-04 18:00 被阅读0次

    int startX;

        int startY;

        int left;

        int top;

        int[]temp =new int[]{0, 0};

        @Override

        public boolean onTouch(View view, MotionEvent motionEvent) {

    int x = (int) motionEvent.getRawX();

            int y = (int) motionEvent.getRawY();

            switch (motionEvent.getAction()) {

    case MotionEvent.ACTION_DOWN:// touch down so check if the

                    startX = x;

                    startY = y;

                    temp[0] = (int) motionEvent.getX();

                    temp[1] = y - view.getTop();

    break;

                case MotionEvent.ACTION_MOVE:// touch drag with the ball

                    left = x -temp[0];

                    top = y -temp[1];

                    if (left <0) {//控制左边界不超出

                        left =0;

                    }

    view.layout(left, top, left + view.getWidth(), top + view.getHeight());//自由拖拽

                    break;

                case MotionEvent.ACTION_UP:

    if (Math.abs(x -startX) >2 || Math.abs(y -startY) >2) {//判断是否移动,再一定范围内不算是移动,解决触发事件冲突

    //将最后拖拽的位置定下来,否则页面刷新渲染后按钮会自动回到初始位置

    //注意父容器

                        RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) view.getLayoutParams();

                        lp.setMargins(left, top, 0, 0);

                        view.setLayoutParams(lp);

                        //确定是拖拽

    //                    isMove = true;

                    }

    break;

            }

    return true;

        }

    设置控件的onTouch事件

    这样子就ok了

    相关文章

      网友评论

        本文标题:Android 制作可拖动控件。并且不会因为布局的改动而复位2

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