Android事件分发总结(View)
- 1.onTouch和onTouchEvent有什么区别,又该如何使用?
-
从源码中可以看出,这两个方法都是在View的dispatchTouchEvent中调用的,onTouch优先于onTouchEvent执行。如果在onTouch方法中通过返回true将事件消费掉,onTouchEvent将不会再执行。
-
另外需要注意的是,onTouch能够得到执行需要两个前提条件,第一mOnTouchListener的值不能为空,第二当前点击的控件必须是enable的。因此如果你有一个控件是非enable的,那么给它注册onTouch事件将永远得不到执行。对于这一类控件,如果我们想要监听它的touch事件,就必须通过在该控件中重写onTouchEvent方法来实现。
-
Android事件分发总结(ViewGroup)
-
1.Android事件分发是先传递到ViewGroup,再由ViewGroup传递到View的。
-
2.在ViewGroup中可以通过onInterceptTouchEvent方法对事件传递进行拦截,onInterceptTouchEvent方法返回true代表不允许事件继续向子View传递,返回false代表不对事件进行拦截,默认返回false。
-
3.子View中如果将传递的事件消费掉,ViewGroup中将无法接收到任何事件。
更多细节可以看:
- 郭霖的博客: http://blog.csdn.net/guolin_blog/article/details/9097463
- 鸿洋_博客:https://blog.csdn.net/lmj623565791/article/details/38960443