// 触摸事件:手指一挨着屏幕 手指移动 手指离开屏幕
iv_drag_view.setOnTouchListener(this);
```
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
// 如果手机放在imageview上拖动
case R.id.iv_drag_view:
// 获取手指什么时候开始在x方向
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startx = (int) event.getRawX();// 获取手指第一次接触屏幕在x方向的坐标
starty = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:// 手机没有离开
int x = (int) event.getRawX();// 获取手指第一次接触屏幕在x方向的坐标
int y = (int) event.getRawY();
if (y<240) {
// tv_drag_view设置在窗体的下面
tv_drag_view.layout(tv_drag_view.getLeft(), 260, tv_drag_view.getRight(), 280);
}else {
// tv_drag_view设置在窗体的上面
tv_drag_view.layout(tv_drag_view.getLeft(), 60, tv_drag_view.getRight(), 80);
}
// 获取手指移动的距离
int dx = x - startx;
int dy = y - starty;
int l = iv_drag_view.getLeft();// 获取imageview的左边坐标
int t = iv_drag_view.getTop();
int r = iv_drag_view.getRight();
int b = iv_drag_view.getBottom();
iv_drag_view.layout(l + dx, t + dy, r + dx, b + dy);// 最后imageview左边位置是原始左边坐标加上移动的距离
startx = (int) event.getRawX();// 获取手指离开屏幕在x方向的坐标
starty = (int) event.getRawY();
break;
case MotionEvent.ACTION_UP:// 手机离开屏幕对应的事件
Log.i(TAG, "手指离开屏幕");
//当手指离开时就记录最后图片在窗体中的位置
int lastx=iv_drag_view.getTop();
int lasty=iv_drag_view.getLeft();
Editor editor=sp.edit();
editor.putInt("lastx", lastx);
editor.putInt("lasty", lasty);
editor.commit();
break;
}
break;
}
return true;// 不会中断触摸事件的返回
}
```
ImageView的touch事件
最新推荐文章于 2021-05-29 12:28:58 发布
