参考回答:
事件分发本质:就是对MotionEvent事件分发的过程。即当一个MotionEvent产生了以后,系统需要将这个点击事件传递到一个具体的View上。
点击事件的传递顺序:Activity(Window) -> ViewGroup -> View
三个主要方法:
- dispatchTouchEvent:进行事件的分发(传递)。返回值是 boolean
类型,受当前onTouchEvent和下级view的dispatchTouchEvent影响 - onInterceptTouchEvent:对事件进行拦截。该方法只在ViewGroup中有,View(不包含
ViewGroup)是没有的。一旦拦截,则执行ViewGroup的onTouchEvent,在ViewGroup中处理事件,而不接着分发给View。且只调用一次,所以后面的事件都会交给ViewGroup处理。 - onTouchEvent:进行事件处理。