[简单]Android中的事件分发各方法

onTouchEvent()表示对事件处理的方法
如果事件传播到该类中 表示该类调用onTouchEvent()方法处理该事件
1. 如果该函数返回false
表示不进行事件的处理 将事件进行回传(回传给上层的view或者是viewGroup, 由上层的view调用自己的onTouchEvent()方法处理,如果上层的view也未进行事件处理onTouchEvent() 返回false,那么事件消失 并且接受不到下一次事件 例如:没有处理down事件就不能处理up事件);
2. 如果该方法返回true
表示对当前的事件进行处理 事件只能被处理一次.
注意:onTouchEvent()返回false与返回super.onTouchEvent(event) 意思一样

dispatchTouchEvent() 分发事件的方法 不管是view还是viewGroup都具有分发事件的函数.
一般情况ViewGroup中将事件分发给子view View中将事件分发给自己.当事件触发时activity将事件传递到layout layout调用自己的分发方法将事件分发给具体的子控件.
子控件也具有分发方法 但是子控件只能分发给自己
接着获取分发的事件调用onTouchEvent()方法处理事件, 如果返回true 表示事件会分发给当前的view的dispatchTouchEvent进行处理 并且会停止事件向下传递分发. 一般情况都不会修改返回值 改变正常的事件分发流程.

onInterceptTouchEvent事件拦截的方法
事件传递给layout 如果layout不进行拦截 通过拦截的方法 事件就被分发给具体的子控件。
子控件就会执行自己的分发和onTouchEvent()方法处理事件 如果子控件的onTouchEvent()方法并且对事件处理 事件回传 执行layout中的onTouchEvent() 如果layout中也返回false 事件消失; 如果layout中onTouchEvent()返回true 那么后续的事件也会直接交给layout处理
返回true 表示拦截当前的事件并且交给当前视图的onTouchEvent()处理返回false 表示不拦截 按照正常的事件传播机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值