在onTouchEvent()方法中处理 ACTION_DOWN、ACTION_MOVE 和 ACTION_UP 三个事件,使用全局标记 isDrag 表示是否正在被拖拽。
-
在 ACTION_DOWN 时设置为 false 并且记录当前的x 和 y的值。
-
在 ACTION_MOVE 时记录当前移动的距离,rawX - lastX 为当前x轴移动距离,rawY - lastY 为纵轴移动距离。需要重新绘制当前view(位置已经发生改变)
-
在ACTION_UP 时设置press状态为 false,根据计算的结果判断拖拽距离是否超过阈值(自行设定),超过则认为是拖拽手势并对 view 进行动画(需要确定移动距离以及是否超出屏幕边缘,超出则放置在边缘。这里需要计算screenWidth 、screenHeight statusBarHeight以及可能存在的虚拟键的 height )。
网友评论