Android 事件传递和处理机制

1.关于事件传递和处理机制,可以简单的概括为:事件传递是从上往下的(Activity->ViewGroup->View),而事件处理机制是从下往上的(View->ViewGroup->Activity)
2.在ViewGroup中,有下面三个方法:
(1)dispatchTouchEvent 该方法用来分发事件,一般不会重写这个方法
(2)onInterceptTouchEvent 用来拦截事件
(3)onTouchEvent 用来处理事件,这个方法应该大家很常见了吧
而View中,只有两个方法,即:
(1)dispatchTouchEvent 该方法用来分发事件,一般不会重写这个方法
(2)onTouchEvent 用来处理事件,这个方法应该大家很常见了吧
3.事件一定是先传递而后处理
正常的事件传递顺序是Activity->ViewGroup->View,而假如Viewgroup的onInterceptTouchEvent 方法返回true,则事件传递到ViewGroup后就不会再向下传递了,也就是说View并不知道有这个事件的存在,也就不会去执行自己的处理方法dispatchTouchEvent 和onTouchEvent. 事件传递到ViewGroup就结束了
正常的事件处理机制 是View->ViewGroup->Activity, 而假如View的OnTouchEvent返回true ,则表示该事件处理完毕,不会再向ViewGroup传递.假如View的OnTouchEvent返回false ,则会将事件交给ViewGroup处理,假如ViewGroup的OnTouchEvent返回true ,则事件处理完毕,不会再向Activity传递,若OnTouchEvent返回false则事件交给Activity处理,事件处理结束
所以影响事件传递的是ViewGroup的onInterceptTouchEvent 方法,决定事件处理的是View的onTouchEvent方法

你可能感兴趣的:(Android 事件传递和处理机制)