事件分发总流程
Activity dispatcTouchEvent->
ViewGroup dispatcTouchEvent-> OnIntercepteTouchEvent->
View dispatcTouchEvent-> OnTouchEvent
Activity中的dispatcTouchEvent
true 消费掉
false 消费掉
super 传递给下一级(ViewGroup中的dispatcTouchEvent)
ViewGroup中的dispatcTouchEvent
True 消费掉
False 调用上一级的OnTouchEvent
Super 传递给下一级( OnIntercepteTouchEvent函数)
ViewGroup中的OnIntercepteTouchEvent
true 调用自己的OnTouchEvent
false 传递给下一级(View的 dispatcTouchEvent)
super 传递给下一级(View的 dispatcTouchEvent)
View的 dispatcTouchEvent
true 消费掉
false 调用上一级的OnTouchEvent
super 传递给下一级( OnTouchEvent函数)
最后注意一点是 如果要使用super的方式, 那么必须 将super和返回值作为函数的最后一段
否则 就没有效果了。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean isTouch=false;
isTouch=super.dispatchTouchEvent(ev);
return isTouch;
}