dispatchTouchEvent 只有父layout:ViewGroup有的拦截事件 若false 给子处理,否则给自己的onTouchEvent处理
onTouchEvent view点击处理事件 若true 会继续处理接收来的事件,若false则往父传,下一次不会传过来了,父的onTouch事件去接收处理 直到到activity的onTouch事件处理
往下传为隧道方式 往上为冒泡:
Touch事件通过dispatchTouchEvent以隧道方式从上往下传递。如果在一个View中执行onTouchEvent时返回 true的话,接下来的事件(ACTION_DOWN后的ACTION_UP,及可能在中间包含的若干个ACTION_MOVE,从 ACTION_DOWN至ACTION_UP为一个连续事件,这是自己想的,不知道准确否)仍会传递到这个View的onTouchEvent,如果返回 false的话,接下来的事件就不会再传递到这个View,而是执行其Parent View的onTouchEvent,每当一个View的onTouchEvent事件返回false,接下来的事件(如果还有的话)就会止步于这个 View的Parent View,每次上升一个层次,类似于冒泡方式。
在一个viewGroup上有多个viewGroup 拦截事件:
如果第一个ViewGroup的 dispatchTouchEvent函数就返回了true(已经消耗掉了这个事件),那么其他两个ViewGroup的 dispatchTouchEvent就不会再被调用。可以自定义一个ViewGroup的子类并重载他的dispatchTouchEvent函数,使 其处理过Touch事件后仍返回false,那么就还会调用其他兄弟View的dispatchTouchEvent函数