主要理解几个方法的调用顺序,分发的先后
dispatchTouchEvent()
onInterceptTouchEvent()
onTouchEvent()
接下来一图胜千言
可以看到 dispatchTouchEvent() 贯穿事件传递,并且主导了事件的流向。
需要特别指出的是 ,如果:
Activity dispatchTouchEvent()方法针对down事件不分发(返回false)。
ViewGroup 中dispatchTouchEvent()方法针对down事件不分发,ViewGroup 中onInterceptTouchEvent()针对down事件拦截。
View中dispatchTouchEvent()方法针对down事件不分发。
以上几种情况都会导致子view不能响应up 和move事件。