还没有认真试过,有时间测试下,看下结果。
Android系统每个View都有3个和Touch事件相关的方法:
public boolean dispatchTouchEvent(MotionEvent ev){},用来分发Touch事件;
public boolean onInterceptTouchEvent(MotionEvent ev){},用来拦截Touch事件;
public boolean onTouchEvent(MotionEvent ev){},这里响应Touch事件;
1、当Touch事件发生时,最先响应的是顶层的View(父View),通过dispatchTouchEvent,把事件分发下去;
2、如果dispatchTouchEvent 返回true,则交给这个View的onTouchEvent处理;如果返回 false,则交给这个View的onInterceptTouchEvent来处理;
3、如果onInterceptTouchEvent 返回true,则交给onTouchEvent处理;如果返回 false,则传递给子View,由子View的dispatchTouchEvent 来分发事件;
4、当执行到某个View的onTouchEvent方法中时,若返回true,则整个Touch事件结束;若返回false,则执行父View的onTouchEvent方法;