ViewGoup: dispatchTouchEvent(); onInterceptTouchEvent(); onTouchEvent()
View:dispatchTouchEvent(); onTouchEvent()
Activity:dispatchTouchEvent(); onTouchEvent()2.探索Touch事件的传递机制的意义
说明:
1.为了便于理解和整文的清晰明了,本篇文章只是分析一种事件类型:ACTION_DOWN事件的传递过程,置于ACTION_MOVE,ACTION_UP事件会在下一篇文章《一步步探索学习Android Touch事件分发传递机制(二)》中分析。
2.知其然,还须知其所以然,我会在《一步步探索学习Android Touch事件分发传递机制(三)》中,通过分析Android源码来解释探索整个Android Touch事件传递分发机制。
注:只有ViewGroup有onInterceptTouchEvent()方法。至于为什么这么设计,在后面探索完之后会交代。
1.对于dispatchTouchEvent()方法:
- return true:消费掉事件,终止传递。
- return false: 将事件传递给上一级View的onTouchEvent()方法。如果是Activity的dispatchTouchEvent()方法,则也是消费掉事件,终止传递。
- return super:如果是Activity,则传给下一级view(viewGroup)的dispatchTouchEvent;如果是ViewGroup,则传给自己的onInterceptTouchEvent();如果是View,则传给自己的onTouchEvent().
2.对于onTouchEvent()方法:
- return true:消费掉事件,终止传递。
- return false/super:将事件传递给上一级view的onTouchEvent()方法。
3.对于onInterceptTouchEvent()方法:
- return true:将事件传递给ViewGroup自己的onTouchEvent()方法处理。
- return false/super:将事件传递给下一级View的dispatchTouchEvent()。
来源: https://juejin.im/post/5a0fab1bf265da432d27ad70