美文网首页
2018-08-13 Android跟随手指移动的view

2018-08-13 Android跟随手指移动的view

作者: 我来学习了 | 来源:发表于2018-08-13 15:12 被阅读0次

    我这里的View随着手指移动用的是系统方法,View.layout(int l, int t, int r, int b)

    以ImageView为例:四个参数分别是ImageView的getLeft(),getTop(),getRight(),getBottom();

    直接上关键代码:

    imageView.setOnTouchListener(new View.OnTouchListener() {

    @Override

        public boolean onTouch(View view, MotionEvent motionEvent) {

    switch (motionEvent.getAction()){

    case MotionEvent.ACTION_DOWN:

    downX = (int)motionEvent.getRawX();

                    downY = (int)motionEvent.getRawY();

    break;

                case  MotionEvent.ACTION_MOVE:

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

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

                    int offx = currentX  -downX;

                    int offy = currentY -downY;

                    imageView.layout(imageView.getLeft()+offx, imageView.getTop()+offy, imageView.getRight()+offx,imageView.getBottom() + offy);

                    downX = currentX;

                    downY= currentY;

    break;

                case  MotionEvent.ACTION_UP:

    break;

                default:

    break;

            }

    return true;

        }

    });

    });

    其中,event.getRawX() 获取的是点击ImageView时事件的坐标距离屏幕的X轴边缘距离;区别于event.getX(),event.getX()获取的是事件相对于ImageView本身左上角的X轴距离。 ImageView.getLeft:获取的是View自身的左边距离父布局的左边的距离。

    相关文章

      网友评论

          本文标题:2018-08-13 Android跟随手指移动的view

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