首页 > 移动平台 > 详细

Android事件分发

时间:2019-12-01 20:09:34      阅读:69      评论:0      收藏:0      [点我收藏+]

View 、ViewGroup事件分发:

1. Touch事件分发中只有两个主角:ViewGroup与view

ViewGroup包含onTnterceptTouchEven,dispathTouchEven,onTouchEven三个相关事件

View包含dispathTouchEven,onTouchEven两个相关事件

2. ViewGroup和View组成了一个树状结构,根节点为Activity内部包含的一个ViewGroup

3. 触摸事件由Action_Down,Action_Move,Action_Up组成,其中一次完整的触摸事件,Down和Up都只有一个,Move有若干个,可以为0个

4. 当Activity接收到Touch事件时,将遍历子view进行Down事件的分发,ViewGroup的遍历可以看成是递归的,分发的目的是为了找到真正要处理本次完成触摸事件的view,这个view会在onTouchEvent返回true

5. 将某个View 返回true时,会终止Down的分发,同时在ViewGroup中记录了改子View,接下来的Move和Up事件将由该子View直接进行处理,由于子View是保存在ViewGroup中的,存在多层ViewGroup的节点结构时,上级ViewGroup保存的会是真实处理的View所在的ViewGroup对象:

如ViewGroup0 ---VIewGroup1 -- TextView 的结构中,TextView返回了true,它将保存在ViewGroup1中,而ViewGroup1也会返回true,保存在ViewGroup0中,当Move和Up事件来时,会先从ViewGrou0传递到ViewGroup1,在由ViewGroup1传递到TextView。

6. 当ViewGroup中所有子View都不捕获Down事件时,将触发ViewGroup自身的onTouch事件,触发时调用super.dispatchTouchEven函数,即父类View的dispatchTouchEvent方法,在所有子View都不处理的情况下,触发Activity的onTouchEven方法

7. onInterceptTouchEvent有两个作用

1)拦截Down事件的分发

2)终止Up和Move事件向目标view传递,使得目标View所在的ViewGroup捕获up和move事件。

Android事件分发

原文:https://www.cnblogs.com/Ayinger/p/11966845.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!