dispatchTouchEvent是 view , viewgroup , activity, 都有的方法。
该方法的返回形式可以有3种,return true, return false, return super.dispatchTouchEvent(event);
分别代表:
1,消费了事件。如果消费了事件,那么事件的后续会连续传入到这里。
2,不消费事件。不仅控件本身不消费,而且不向下传递。如果不消费事件,后续不会传入。而且onInterceptTouchEvent(MotionEvent ev) 和 onTouchEvent(MotionEvent event)不会被调用。
3,继续传递事件。
首先在super.dispatchTouchEvent方法中,调用本类的onInterceptTouchEvent(MotionEvent ev) , intercept方法 = true 则传至本类的onTouchEvent, intercept方法 = false 则传子控件。
伪代码如下:
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean consume = false;
if (onInterceptTouchEvent(ev)) {
consume = onTouchEvent(ev);
} else {
consume = child.dispatchTouchEvent(ev);
}
}