一、View(Button,TextView等)
点击事件,正常执行顺序:
按下触发ACTION_DOWN
(Activity)dispatchTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent
接着弹起触发ACTION_UP
(Activity)dispatchTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent->(View)onClick监听事件
如果不想执行onClick监听事件,则可以在onTouch监听事件中返回true,则不会执行onTouchEvent,也就不会去执行onClick监听事件
二、ViewGroup(LinearLayout,ListView等)
点击事件,正常执行顺序:
按下触发ACTION_DOWN
(Activity)dispatchTouchEvent->(ViewGroup)dispatchTouchuEvent->(ViewGroup)onInterceptTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent
接着弹起触发ACTION_UP
(Activity)dispatchTouchEvent->(ViewGroup)dispatchTouchuEvent->(ViewGroup)onInterceptTouchEvent->(View)dispatchTouchEvent->(View)注册的onTouch监听事件->(View)onTouchEvent->(View)onClick监听事件
这里如果ViewGroup的onInterceptTouchuEvent返回true,则下面的View事件不会执行,而会执行(ViewGroup)注册的onTouch监听事件->(ViewGroup)onTouchEvent->(ViewGroup)注册的onClick监听事件
一篇比较好的事件传递文章:http://blog.youkuaiyun.com/lmj623565791/article/details/39102591