对于安卓事件传递和消费机制,他给我们提供了3个方法,DispatchTouchEvent(),OnInterceptTouchEvent()和OnTouchEvent():
当监听到事件时,首先由Activity捕获;开始进入事件分发流程.
DispatchTouchEvent():
如果返回的是true,表明事件不会再本层进行分发并且在事件分发自身中已经被消费,并且事件已经完结;
如果返回false,表明事件也不会在本层进行分发,但他会交给上层控件的onTouchEvent()方法进行消费;
如果本层控件已经是activity,那么会被系统消费或处理.
如果返回super,那么事件就会交给本层的onInterceptTouchEvent()进行处理.
OnInterceptTouchEvent():
如果返回true,则表示事件进行拦截,交给本层的onTouchEvent()方法进行消费;
如果返回false或者super,就不会对事件进行拦截,都会交给子view的disPatchTouchEvent()方法进行处理.
OnTouchEvent():
如果返回true,表示TouchEvent处理完事件后消费了本次事件,事件也将终结,不会再有后续的冒泡
如果返回false,表示TouchEvent处理完事件后继续向上一层的view冒泡,交给上一层的OnTouchEvent进行处理.
如果返回super,则默认的处理逻辑和false一样,也是本层处理完时间后交给上一层处理