一,弄清楚onTouch,onClick,onLongClick的关系
onTouch、onClick和onLongClick等都是android中事件的表现形式,而根据体的说就是一个事件的发生首先有onTouch接收,执行action_down,action_move和action_up等,而onclick和onLongclick都是在action_down 发生后,根据判定条件,最后决定是否触发事件,想详细了解,可以去看看这篇博文
二,事件的传递和消费过程
首先是事件的捕获,事件产生后,有最外层的view捕获,也就是activity的最外一层view捕获,然后沿着节点,依次向内层view传递;
而事件的消费则刚好相反,在不考虑拦截的情况下,事件传到最内层view后,由其开始消费,根据消费结果,决定是否在向上传递,直到最内层,
想详细了解,学习这篇博文
三,事件拦截
public boolean onInterceptTouchEvent(MotionEvent ev) ,很多人对这个方法估计眼熟,不错它就是实现事件拦截的方法,我们的view都继承了这个方法,根据它返回的结果,系统决定事件是否继续传递,如果 onInterceptTouchEvent 返回 true,则表示将事件进行拦截,并将拦截到的事件交由本层控件 的 onTouchEvent 进行处理;
如果返回结果是false;则表示不对事件进行拦截,事件得以成功分发到子View。并由子View的dispatchTouchEvent进行处理。
如果返回super.onInterceptTouchEvent(ev),事件默认不会被拦截,交由子View的dispatchTouchEvent进行处理。
以上都是个人学习时的一些总结,如有错误,请大家指正,谢谢!