追踪手势移动

    本节课程讲述如何追踪手势移动。

    因为基于手指的触摸的交互方式并不总是非常精确,所以检测触摸事件更多的是基于手势移动,而非简单地基于触摸。为了帮助app区分基于移动的手势(如滑动)和非移动手势(如简单地点击),Android引入了“touch slop”的概念。Touch slop是指,在被识别为基于移动的手势前,用户触摸可移动的那一段像素距离。关于这一主题的更多讨论,可以在管理ViewGroup中的触摸事件中查看。

    • 根据x、y轴坐标,追踪手指移动的方向。
    • 追踪手指在触摸屏上滑过的速度。

    我们可以简单地用基于距离,或(和)基于手指移动方向的移动手势。但是速度经常也是追踪手势特性的一个决定性因素,甚至是判断一个手势是否发生的依据。为了让计算速度更容易,Android提供了类以及Support Library中的类。VelocityTracker类可以帮助我们追踪触摸事件中的速度因素。如果速度是手势的一个判断标准,比如快速滑动(fling),那么这些类是很有用的。

    Note: 需要注意的是,我们应该在事件,而不是在ACTION_UP事件后计算速度。在事件之后,计算x、y方向上的速度都会是0。