您的位置:首页 > 移动开发 > Android开发

android View 系统 touch 事件处理

2016-03-19 00:12 477 查看
这篇文章总结一下 android View 系统 touch 事件处理,View 系统对 touch 事件的处理包含两部分

1. View 对 touch 事件的处理

2. ViewGroup 对 touch 事件的处理

除了上述两点,touch 事件的处理还有一个很重要的知识点就是 touch 事件的分发, touch 事件产生后,系统需要把这个事件传递给一个具体的 view 来处理,这个传递的过程就是 touch 事件的分发。ViewGroup 对 touch 事件的处理,就包含了 touch 事件分发的大部分内容。

touch 事件,在 android 中是用 MotionEvent 对象来表示的。MotionEvent 有很多类型,目前我们关注的类型有 Down、Up、Move、Cancel。

一个完整的手势是一个 MotionEvent 事件序列,这个 MotionEvent 事件序列由 Down 类型的 MotionEvent 开始,Up 类型的 MotionEvent 结束,中间可以包含 0…n 个 Move 类型的 MotionEvent。

我们对 touch 事件的处理,都是对 MotionEvent 事件序列整体来进行分析,因为同一个手势的 MotionEvent 事件,前面 MotionEvent事件的处理结果会影响后面 MotionEvent 事件的分发。

Down 类型的事件在传递过程中会遍历每个子 View 来寻找事件处理的目标 View。找到 targetview 之后,后续的 Move、Up 类型的事件父 View 直接传递给该 View,省去了遍历的过程,提高了系统效率。要成为目标 View 必须满足 2 个条件:

1. touch 事件的位置必须落在该 view 占用的空间

2. 必须消耗掉 Down 类型的事件

View 对 touch 事件的处理(流程图说明)

ViewGroup 对 touch 事件的处理

Touch 事件的分发

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: