1.一个事件序列从手指接触屏幕到手指离开屏幕,在这个过程中产生一系列的事件,以down事件开始,中间含有不定数的move事件,以up事件结束.
2.正常情况下,一个事件序列只能被一个View拦截并消耗
3.某个View一旦决定拦截,那么这个事件当都由他的ontouchEvent处理,并且它的onInterceptTouchEvent不会再调用
4.某个View一旦开始处理事件 如果它不消耗action_down事件 ,那么同一事件序列中的其他事件都不会再交给他处理,兵重新交由他的父元素处理(父元素的onTouchEvent)
5.事件的传递过程是由外向内的 ,即事件总是先传递给父元素,然后再由父元素分发给子View ,通过requestDisallowInterceptTouchEvent方法可以在子View中干预父元素的事件分发过程,但是Action_down除外
6.ViewGroup默认不拦截任何事件,即onIterceptTouchEvent默认返回false.View没有onInterceptTouchEvent方法,一旦有点击事件传递给他,那么他的onTouchEvent方法就会被调用
7.View的onTouchEvent默认会消耗事件(返回true),除非它是不可点击的(clickable和longClickable同为false) ,View的longClickable默认都是false,clickable要分区块,比如button的clickable默认为true ,TextView的clickable默认为false
8.View的enable属性不会影响onTouchEvent的默认返回值,哪怕一个View的disable状态,只要他的clickable或者longClickable又一个为true,那么它的onTouchEvent就返回true
9.onClick会响应的前提是当前View是可点击的,并且受到了Action_down和Action_Up事件,并且受长按事件影响,当长按事件返回true时,onclick不会响应
10.onLongClick再Action_down里判断是否进行响应,要想执行长按事件该View必须是longClickable的并且设置了onLongClickListener