View的事件分发机制
2017-07-09 02:57:08 11 举报
View的事件分发机制是Android系统中用于处理用户交互事件的一种机制。当一个事件(如点击、触摸等)发生时,该事件首先会被传递给当前活动的根视图(即Activity)。然后根视图会根据事件的类型和优先级,将事件分发给它的子视图。如果子视图没有消费掉该事件(即没有调用onTouchEvent或onClickListener),则事件会继续向上传递,直到被某个视图消费掉为止。如果所有视图都没有消费掉该事件,则事件会最终被系统回收。这种机制保证了事件的传递顺序和优先级,使得应用程序能够正确地响应用户的交互操作。
作者其他创作
大纲/内容
true
false
onTouchEvent()
处理点击事件,事件到此结束
调用child.dispatchTouchEvent()方法
dispatchTransformedTouchEvent()
返回值(true/false)
mOnClickListener.onClick()
onInterceptTouchEvent()
mOnClickListener==null
dispatchTouchEvent()
Rango
mOnTouchListener.onTouch()
调用super.dispatchTouchEvent()方法
此时的child ==null,这是写死的
传递child
mFirstTouchTarget == null
super.dispatchTouchEvent() 方法其实调的就是此viewGroup的父类View的dispatchTouchEvent()方法,即把此事件传递给了当前的View,也可以看作就是此ViewGroup自己处理的此事件
代表view的dispatchTouchEvent()方法返回false
判断child == null
dispatchTouchEvent()方法中判断onInterceptTouchEvent()的返回值
这个时候的mFirstTouchTarget肯定为null
这时候就回到dispatchTouchEvent()方法了
事件到此结束
代表viewGroup的dspatchTransformedTouchEvent()方法返回false
事件被onTouch()方法消费了,到此结束
mOnTouchListener == null
dispatchTouchEvent()方法就会去遍历此viewGroup的子view,如果存在被点击的子view,就给chilid赋值
child是一个View类型的
child是一个view,会在下一个方法中用到
ACTION_UP
返回值false/true
performClick()
即表示未调用addTouchTarget()方法,即mFirstTouchTarget == null
事件没有被消费,传给外层view的onTouchEvent(),依次类推,直到布局中的最外层view的onTouchEvent()方法,此时不管消费不消费事件到此结束
Activity
View
事件被消费了
ViewGroup
返回值false/true
0 条评论
回复 删除
下一页