Android事件分发


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来处理相关事件。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值