主要牵扯三个方法
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是一样的,