Android事件分发机制理解总结

主要牵扯三个方法

disPatchTouchEvent(); view和viewgroup都又此方法,主要是事件的分配,返回true,会走自己的onTouchEvent();

onInterceptorTouchEvent();只有viewgroup有此方法,主要是拦截事件往子view的传递;

onTouchEvent();主要是处理事件的具体操作。



上一张图


事件传递图

从上图可以看出:

1 事件默认是activity--viewgroup--view---viewgroup---activity传递的。

2 Viewgroup如果想自己处理事件,也就是需要走自己的ontouchEvent方法,必须重写onInterceptorTouchevent方法,返回true表示自己会拦截此事件。否则继续往下传递。

3 onTouchevent和dispatchevent如果返回true都会消费掉事件(事件结束,不会再往下传递了);

4 viewgroup的diaptchTouchevent和oninterceptorTouchEvent,都要注意一下返回true/false或者调用super的情况,onInterceptorTouchevent方法super和false是一样的,

你可能感兴趣的:(Android事件分发机制理解总结)