事件分发总结
在Android事件分发中,主要是对这三个方法的返回值的不同状态处理进行各种业务的实现。
Activity
dispatchTouchEvent 方法
onTouchEvent 方法
ViewGroup
dispatchTouchEvent 方法
onInterceptTouchEvent 方法
onTouchEvent 方法
View
dispatchTouchEvent 方法
onTouchEvent 方法
所有方法的返回值的三种状态 true/false/super
Activity自身处理事件(就近ACTION_DOWN事件)
dispatchTouchEvent
//返回值:
true/
false
dispatchTouchEvent(Activity)
onTouchEvent
dispatchTouchEvent(Activity)
dispatchTouchEvent(ViewGroup)
onTouchEvent(Activity)
ViewGroup自身处理事件(就近ACTION_DOWN事件)
dispatchTouchEvent
dispatchTouchEvent(Activity)
dispatchTouchEvent(ViewGroup)
onTouchEvent
dispatchTouchEvent(Activity)
dispatchTouchEvent(ViewGroup)
OnInterceptTouchEvent(ViewGroup)
onTouchEvent(ViewGroup)
View自身处理事件(就近ACTION_DOWN事件)
dispatchTouchEvent
dispatchTouchEvent(Activity)
OnInterceptTouchEvent(ViewGroup)
OnInterceptTouchEvent(ViewGroup)
dispatchTouchEvent(View)
onTouchEvent
dispatchTouchEvent(Activity)
OnInterceptTouchEvent(ViewGroup)
OnInterceptTouchEvent(ViewGroup)
dispatchTouchEvent(View)
onTouchEvent(View)
对于ACTION_MOVE、ACTION_UP总结
ACTION_DOWN事件在哪个控件消费了(
return true),那么ACTION_MOVE和ACTION_UP就会从上往下(通过dispatchTouchEvent)做事件分发往下传,就只会传到这个控件,不会继续往下传,
如果ACTION_DOWN事件是在dispatchTouchEvent消费,那么事件到此为止停止传递,
如果ACTION_DOWN事件是在onTouchEvent消费的,那么会把ACTION_MOVE或ACTION_UP事件传给该控件的onTouchEvent处理并结束传递。
以上都是参考该文章:http://www.jianshu.com/p/e99b5e8bd67b