Android事件分发机制
Posted nangongyibin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android事件分发机制相关的知识,希望对你有一定的参考价值。
通过图片,我们能够知道
所有disPatchTouchEvent()方法(除Activity)
return true 事件消费
retur false 事件回传父类的onTouchEvent()
return super() 事件向下传递
所有的dispatchTouchEvent()和onTouchEvent()方法,一旦return true,则事件就被消费,没有谁能够接收到这个事件了
所有的dispatchTouchEvent()和onTouchEvent()方法return false的时候,都会回传给父控件的onTouchEvent()方法处理
如果事件不中断,则整个事件为U型传递,也就是一直return super()
onInterceptTouchEvent()方法的作用,每个ViewGroup都会有onInterceptTouchEvent()方法来判断是否需要拦截事件,如果返回true,则会将事件传递到自己的onTouchEvent()方法中,如果返回false和super(),则表示不拦截,向下继续传递事件
ViewGroup怎么将事件传递到自己onTouchEvent()呢,ViewGroup的disPatchTouchEvent()方法
return true,则事件消费,不再传递
return false,则事件传递到父控件的onTouchEvent()方法
return super() ,将事件传递到onInterceptTouchEvent()方法,然后return true之后,才能自己处理自己的onTouchEvent
View怎么将事件传递到自己的onTouchEvent()呢?View 没有onInterceptTouchEvent()方法,只有disPatchTouchEvent()方法
return true则事件消费
return false 则事件传给ViewGroup的onTouchEvent()方法
return super()则事件传递给自己的onTouchEvent()
以上是关于Android事件分发机制的主要内容,如果未能解决你的问题,请参考以下文章
Android 事件分发事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 )
Android 事件分发事件分发源码分析 ( ViewGroup 事件传递机制 五 )
Android 事件分发事件分发源码分析 ( ViewGroup 事件传递机制 三 )