onInterceptTouchEvent:
onInterceptTouchEvent是在ViewGroup里面定义的。Android中的layout布局类一般都是继承此类的。onInterceptTouchEvent是用于拦截手势事件的,每个手势事件都会先调用onInterceptTouchEvent。
onTouchEvent:
onTouchEvent同样也是在view中定义的一个方法。处理传递到view 的手势事件。手势事件类型包括ACTION_DOWN,ACTION_MOVE,ACTION_UP,ACTION_CANCEL等事件。
其中Layout里的onInterceptTouchEvent默认返回值是false,这样touch事件会传递到View控件,Layout里的onTouch默认返回值是false, View里的onTouch默认返回值是true,当我们手指点击屏幕时候,先调用ACTION_DOWN事件,当onTouch里返回值是true的时候,onTouch回继续调用ACTION_UP事件,如果onTouch里返回值是false,那么onTouch只会调用ACTION_DOWN而不调用ACTION_UP.
其实这里涉及到事件分发,它是冒泡事件分发机制,当你在屏幕上点击后,系统会把事件从root view一直向发分发,去找到一个能处理这个事件的view,此时就会先调用onIntercpetEvent(),如果返回false,就会导致onTouchEvent(),如果在action_down返回true,那么说明此时找到能处理这个事件的view了,这里叫做target view,以后的事件如move, up就不会再次查找处理事件,它以后就是直接把move, up发给target view,如果target view没有处理,它就会交给你parent去处理,这样一层一层向上传递,最终会达到root view。