1. 事件传递的正常流程
事件先到MyLinearLayout的dispatchTouchEvent->onInterceptTouchEvent,然后到MyTextView的dispatchTouchEvent->ACTION_DOWN事件,再返回MyLinearLayout的ACTION_DOWN事件,最后到Activity的ACTION_DOWN事件;以后所以的事件将不会传递到
MyLinearLayout和MyTextView中。
2.在最上层的MyTextView中进行事件消耗
2.1在MyTextView的onTouchEvent中消耗所有ACTION事件
每个ACTION事件都会经过MyLinearLayout的dispatchTouchEvent->onInterceptTouchEvent,然后到MyTextView的dispatchTouchEvent方法,最后所有事件都在MyTextView的onTouchEvent中被消耗。
2.2只在MyTextView的onTouchEvent方法的ACTION_DOWN返回true消耗事件,其它ACTION事件返回super.onTouchEvent(event)
ACTION_DOWN事件将在MyTextView的onTouchEvent方法中被消耗,值得注意的是后续所有的ACTION事件将不再进入到MyLinearLayout的onTouchEvent方法中;同时,后续所有的ACTION事件将被传递到Activity中
3.在MyLinearLayout中进行事件拦截
3.1在MyLinearLayout的onTouchEvent中消耗所有ACTION事件
所有事件都将在MyLinearLayout的onTouchEvent被消耗
3.2只在MyLinearLayout的onTouchEvent方法的ACTION_DOWN返回true消耗事件,其它ACTION事件返回super.onTouchEvent(event)