Android View事件传递机制(一)
2016-08-28 15:46
411 查看
Android View事件传递机制(一)
需要明确的事情
用户的一次点击,会产生一个事件序列,也就是多次调用事件方法的函数。具体的说就是:一次ACTION_DOWN的事件、多个
ACTION_MOVE的事件、 一个
ACTION_UP的事件。
我们可以将传递过程分为两个部分,第一部分为 是否往分发事件的传递,其过程为:由父
view向子
view传递(也就是
dispatchTouchEvent方法); 第二部分为 是否处理事件的传递,其过程为:由子
view向父
view传递(也就是
onTouchEvent)。
onInterceptTouchEvent方法决定了第一个传递过程到哪一层结束,同时,第二个传递也就相应从这一场开始。
ACTION_DOWN的事件相当于首先去寻找处理该事件的
view,如果找到了,之后的事件会直接传递给该
view,否则,之后的事件直接由最外层的
Activity处理了。
具体的情形
注意,这里说的是down的事件。
如果
View或
ViewGroup在
dispatchTouchEvent返回
true,那么该事件的传递结束,并且之后的事件序列都会只调用到该
dispatchTouchEvent方法,然后结束。(不会再调用自己的
onInterceptTouchEvent和
onTouchEvent方法了。)
如果
View或
ViewGroup在
onInterceptTouchEvent返回
true,那么会调用自己的
onTouchEvent方法,并且继续向上传递,调用父
view的
onTouchEvent,直到找到一个
onTouchEvent返回为
true时停止。之后的事件就会直接传到这个
onTouchEvent方法中。(之注意,之后的事件不会再调用到
onInterceptTouchEvent方法)。
如果
View或
ViewGroup在
onTouchEvent返回
true,是否处理事件的传递就会到此结束,不会再想起父
view传递,而且之后的事件序列也就直接传到该view的
onTouchEvent方法。
以上,就是view 的事件传递的宏观上的描述。可能描述的不够清楚,如果有兴趣的话,最好自己写个demo,简单的修改返回值,来进行相应的测试。只有知道了其宏观表现,对于继续深入研究时,才不会盲目不知所措。
在这一部分,主要是参考了《Android 群英会》和《Android开发艺术探索》。
以上是自己简单总结,之后会结合源码在进一步分析。
相关文章推荐
- Android ViewGroup中事件触发和传递机制
- [学习总结]4、Android的ViewGroup中事件的传递机制(一)
- Android ViewGroup 触摸事件传递机制
- Android进阶学习之路——View事件的传递机制
- Android Touch事件传递机制全面解析(从WMS到View树)
- (转)Android ViewGroup中事件触发和传递机制
- Android应用开发原理之从View源码挖掘View中的事件传递机制
- Android View触摸事件传递机制
- Android Activity 和 ViewGroup中事件触发和传递机制
- Android ViewGroup中事件触发和传递机制
- Android Touch事件在View层级结构中的传递机制
- Android中ViewGroup到View的Touch事件的传递机制
- Android ViewGroup中事件触发和传递机制
- Android ViewGroup中事件触发和传递机制
- Android ViewGroup中事件触发和传递机制
- Android View 触摸事件传递机制
- Android ViewGroup中事件触发和传递机制
- [学习总结]5、Android的ViewGroup中事件的传递机制(二)
- Android 的事件分发机制(一)---view的事件传递
- Android 的事件分发机制(二)---ViewGroup的事件传递