看了网上关于这两个方法的说明,说的详细的感觉啰啰嗦嗦让人看不下去,或者越看越糊涂,不详细的又等于没说。
自己总结如下
1、ViewGroup 里既有onInterceptTouchEvent() 又有onTouchEvent()
View里面只有onTouchEvent();
2、onInterceptTouchEvent() 用于拦截事件传递, onTouchEvent() 用于消费事件(也就是事件的具体实现);
3、调用顺序 父 onInterceptTouchEvent() 返回true则不向下传递,随后调用父控件的 onTouchEvent(),子控件的onTouchEvent不会调用;
父 onInterceptTouchEvent() 返回flase则向下传递,此时不调用父控件的 onTouchEvent(),子控件的onTouchEvent()返回flase时会向上传递给父控件的onTouchEvent()。
4、ACTION_MOVE或者ACTION_UP发生的前提是一定曾经发生了ACTION_DOWN,如果你没有消费ACTION_DOWN,那么系统会认为ACTION_DOWN没有发生过,所以ACTION_MOVE或者ACTION_UP就不能被捕获。