2.3.1 区分点击和长按动作

根据触摸事件可以识别按压动作的时空关系,就能进一步判断用户的手势意图。比如区分点击和长按动作,只要看按压时长是否超过500毫秒即可,没超过的表示点击动作,超过了的表示长按动作。其实,除了按压时长之外,按压力度也是一个重要的参考指标。通常,点击时按得比较轻,长按时按得相对重。依据按压时长与按压力度两项指标即可有效地辨别点击和长按动作。

接下来尝试自定义点击视图,且以按压点为圆心绘制圆圈,从而分别观察点击与长按之时的圆圈大小。定义点击视图的示例代码如下:

(完整代码见event\src\main\java\com\example\event\widget\ClickView.java)

然后在布局文件中添加ClickView节点,并在对应的活动页面调用setLiftListener方法设置手势抬起监听器,看看点击和长按的描圆效果究竟为何。下面是设置手势监听器的示例代码:

(完整代码见event\src\main\java\com\example\event\ClickLongActivity.java)

运行并测试该App,手势按压效果如图2-16和图2-17所示。图2-16为点击手势的检测结果,此时圆圈较小;图2-17为长按手势的检测结果,此时圆圈较大。

图2-16 点击手势的检测结果

图2-17 长按手势的检测结果