事件分发。
首先。 在view中有三个方法。 ontouchevnet() 和dispatchTouchEvent方法 , 如果view监听onTouchlisnner接口和监听onlicklinsner接口
那么执行顺序就是 disapatchTouchevent() 如果子view是可点击状态且ontouch方法返回true 那么onclick事件就不会执行。
如果ontouch放回false 那么onclick就得到执行。 具体可以进源码看。 在
接下来分析viewgroup
首先调用 disapatchTouchevent()方法 然后调用onInterceptTouchEvent()方法。 DisallowInterceptTouchEvent默认值为false,如果在DisallowInterceptTouchEvent值不变的情况下。 onInterceptTouchEvent()方法返回false 表示不拦截子view事件();
如果oninterceptTouchEvent()方法返回true,代表拦截子view事件, 拦截子事件后会执行viewgrop的ontouch方法
view 中的ontouch和ontouchevent();关系。 就是 ontouch优先于ontouchevent()执行。 如果ontouch()返回true。 那么事件被消费。 ontouchevent()是无法执行的。 所对应的onclick()方法也是执行不到的。 否则相反。
还有一点 我不明白的问题。 就是当viewgrop中的ontouch返回false的时候。 为什么action就会执行down一次。 move up 都不执行
如果我将viewgroup中的ontouch方法返回设置为true的时候却可以执行move up事件。 下次用源码分析