View事件分发

来源:互联网 发布:企业号码搜索软件 编辑:程序博客网 时间:2024/06/09 16:46

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)

0 0
原创粉丝点击