
* dispatchTouchEvent 标志着事件进入到了ViewGroup里面。首先被调用到。
* onInterceptTouchEvent 在过程中被调用。true=当前ViewGroup消费掉。false=传递下去。
* onTouchEvent ViewGroup没有onTouchEvent方法的实现,他是在View中实现的。
应用场景:希望事件进行到ViewGroup终止,不传输到子View中,用户的触摸事件自行处理。
处理:重写onInterceptTouchEvent并返回true,同时重写onTouchEvent方法,在其中编写事件处理逻辑即可。


事件分发流程
ViewGroup事件分发流程图。
ViewGroup时间分发
onInterceptTouchEvent方法会在事件分发的过程中调用,如果返回true,说明当前的ViewGroup会拦截这个事件,事件不会再往子View传递;返回false,当前的ViewGroup不会拦截这个事件,事件继续向子View传递。
ViewGroup是没有onTouchEvent方法的实现的,它是在父类View中实现。如果想让事件终止,不让事件传递到子View中,并且用户的触摸事件,我们会自己进行处理,可以重写onInterceptTouchEvent,让它返回true,同时为了处理用户的触摸事件,我们可以重写onTouchEvent方法,在其中编写一些事件的处理逻辑。
ViewGroup的事件分发流程图
onTouchEvent方法在ViewGroup中是没有默认实现的,该方法的实现是在ViewGroup的父类View中实现的。
当onInterceptTouchEvent方法返回true时,可以在ViewGroup的onTouchEvent中实现相应的处理逻辑
onInterceptTouchEvent方法返回true,则表示当前的VIewGroup会拦截MotionEvent事件
onInterceptTouchEvent方法在事件的分发过程中被调用,每次分发都会调用该方法
ViewGroup.dispatchTouchEvent背调用时,说明事件已经进入ViewGroup之中;
即事件一旦进入ViewGroup中,则dispatchTouchEvent方法就立即被调用
没太懂= =
ViewGroup事件分发流程图
ViewGroup 事件分发流程图