80,351
社区成员
发帖
与我相关
我的任务
分享
case MotionEvent.ACTION_MOVE:
int dx =(int)event.getRawX() - lastX; // lastX 和 lastY是成员变量,用来记录上次执行Move的位置
int dy =(int)event.getRawY() - lastY;
int left = 0;
int top = 0;
int right = 0;
int bottom = 0;
//如果按下时的坐标和当前移动到的位置的坐标差的绝对值大于子视图可移动的距离则修改为正在拖动
left = vP.getLeft() + dx;
top = vP.getTop() + dy;
right = vP.getRight() + dx;
bottom = vP.getBottom() + dy;
vP.layout(left, top, right, bottom); // 感觉就是这句话执行了不生效,导致拖不动
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;