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

我这里的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)