Android事件分发

来源:互联网 发布:ubuntu efi系统分区 编辑:程序博客网 时间:2024/06/06 10:29


1、Android事件分发主要适用于Activity、ViewGroup、view。

2、主要涉及三个method:事件分发dispatchTouchEvent(MotionEvent ev),事件拦截onInterceptTouchEvent(MotionEvent ev),事件消费onTouchEvent。

3、Activity只有事件分发和事件消费,最基层的view只有事件消费。

4、事件处理模型是:

1)事件分发向下::从Activity获取事件开始分发向下,到了dispatchTouchEvent,若返回true,则被自身消费,结束;若返回false,则需要上一层的onTouchEvent处理;若返回super.dispatchTouchEvent,则交由onInterceptTouchEvent处理(没有则下层dispatch,若是基层view了,就交由本层onTouchEvent处理),,在onInterceptEvent中,若返回true,则表示拦截,交由本层onTouchEvent处理,若返回false或super.onInterceptTouchEvent,则交由下一层的dispatchTouchEvent处理,,,这样一直向下传递事件,直到基层的onTouchEvent来处理。

2)事件处理向上::在onTouchEvent中处理事件,若返回true,则表明消费了事件,结束;若返回false,则继续交由上一层的onTouchEvent来处理。。。



5、事件分发中重要顺序:根据阅读源码可知,在事件分发中,首先在dispatchTouchEvent中会调用注册的onTouch方法并根据该方法决定返回值,所以该方法的返回值只有为false才能继续执行其他操作。然后在onTouchEvent中会根据情况执行onClick或onLongClick。

6、所以要格外注意这些返回值,,,在处理或解决嵌套问题时,可以通过覆写相关方法来通过返回值来控制分发消费。。。同时在代码中可以通过onTouch来处理自定义的各种事件(对于各种MotionEvent的自定义处理)。。。或者onClick以及onLongClick来处理相关事件。



0 0
原创粉丝点击