一,android事件分发的对象,Activity,View,ViewGroup
二,事件分发主要包括三个方法,
dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent
三,事件正常分发流程,
场景:Activity包括一个ViewGroup,ViewGroup里面又包括一个View
如下图
一次正常的流程分发
Activity dispatchTouchEvent
ViewGroup dispatchTouchEvent
ViewGroup onInterceptTouchEvent
View dispatchTouchEvent
View onTouchEvent
ViewGroup onTouchEvent
Activity onTouchEvent
总体过程是先向下,再回溯。
四,关键方法说明
1,dispatchTouchEvent,根据返回值决定事件是否继续分发
- return false 事件停止分发,返回父控件的onTouchEvent
- return true 顾名思义,事件被消费,就此打住,不在分发
- return return super.dispatchTouchEvent(ev) 事件正常分发
2,onInterceptTouchEvent,根据返回值决定是否要拦截事件,注意此方法只存在于ViewGroup中
- return false 事件不拦截,与 super.onInterceptTouchEvent(ev);功能相同
- return true 事件拦截,进入同级onTouchEvent方法
- return super.onInterceptTouchEvent(ev); 事件不拦截,按正常流程分发
3,onTouchEvent,根据返回值决定是否消费此事件。
- return false 事件不消费,按正常流程分发 同super.onTouchEvent(event)
- return true 事件消费,就此打住
- return return super.onTouchEvent(event); 按正常流程分发
来源:CSDN
作者:阿亮冲出亚马逊
链接:https://blog.csdn.net/qq_29382145/article/details/103474610