在Android中View的事件分发机制是一个很重要的知识点,为了思路更清晰就稍做了下整理,如有错误还请指教。
1.首先事件从上层Activity开始进行分发给ViewGroup的dispatchTouchEvent
2.ViewGroup中的dispatchTouchEvent有三种结果:
<1>返回true 事件终止
<2>返回fase 事件将不分发,不往下传递,回溯至Activty也就是父级中的onTouchEvent中
<3>返回super.dispatchTouchEvent 相当于调用自身的onInterceptTouchEvent询问是否拦截
3.ViewGroup中的onInterceptTouchEvent同样三种结果代表含义为:
<1>返回true 将此事件拦截自己调用自身的onTouchEvent
<2>返回fase与返回super时结果一样代表不拦截此事件,将些事件往下传递至View的dispatchTouceEvent
4.View中dispatchTouceEvent中结果所代表的含义为:
<1>返回true 事件终止
<2>返回fase 事件将不分发,不往下传递,回溯至父级也就是ViewGroup中的onTouchEvent中
<3>返回super.dispatchTouchEvent 因为View中没有拦截器 所以此时相当于调用自身的onTouchEvent
5.View中onTouchEvent结果代表的含义:
<1>返回true 事件终止
<2>返回fase或super 事件将往上层传递,传递给父级中的onTouchEvent
最后,在此感谢网络中无私分享的大神们。
参考资料:图解 Android 事件分发机制
网友评论