Android事件分发的简单理解

事件分发   事件分发是由触发点击事件后事件处理的一个过程

Android 的事件响应机制都是由外向内分发 ,有内到外处理。

事件分发过程中需要OnInterceptTouchEvent 事件拦截方法 和OnTouchEvent事件处理方法 dispathTouchEvent分发点击事件方法协助完成 事件分发的顺序为Activity,ViewGroup,View   所需要执行的事件类型有 DOWN UP MOVE CANCEL  点击 抬起 滑动 结束

1.Touch事件分发中只有两个主角:ViewGroup和View。ViewGroup包含onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent三个相关事件。View包含dispatchTouchEvent、onTouchEvent两个相关事件

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

3.当Acitivty接收到Touch事件时,将对子View进行事件的分发。分发的目的是为了找到真正要处理本次完整触摸事件的View,这个View会在onTouchuEvent结果返回true。

4.当某个子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事件来时,会先从ViewGroup0传递至ViewGroup1,再由ViewGroup1传递至TextView。

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

猜你喜欢

转载自blog.csdn.net/jie1175623465/article/details/81218785