事件分发的几个主要方法与其返回值的意义

本文详细解释了Android中事件分发的关键方法,包括dispatchOnTouchEvent()、onInterceptTouchEvent()和onTouchEvent()的返回值含义。这些方法决定了事件如何在View层次中传递和处理。通过对返回值的理解,可以更好地掌握事件处理流程。

本篇短文只是针对几个事件分发方法的返回值做解释,详细的事件分发学习需搜索大神的文章(网上有很多)。


事件分发的几个主要方法有

 dispatchOnTouchEvent()、onInterceptTouchEvent()和onTouchEvent()


一、dispatchOnTouchEvent()的三个返回值:

1.true 表示这个事件被当前的View消费,会传递给当前View的onInterceptTouchEvent方法处理。

2.false 表示这个事件不会再往上(内)层的View传递了,而是直接交给下(外)层View的onTouchEvent()去处理。

3.super.dispatchOnTouchEvent()返回super.dispatchOnTouchEvent()会将此事件传递给上(内)层 View的 dispatchOnTouchEvent去处理。


总结:dispatchOnTouchEvent的三个返回值中,除了super.dispatchOnTouchEvent()会继续传递下去,其它的返回值都不会继续传递


二、onInterceptTouchEvent()的三个返回值:

(注:View没有onInterceptTouchEvent方法,ViewGroup才会有

1.true 按下去的down事件被onInterceptTouchEvent处理完之后返回true,之后的move、up等方法就不会交由onInterceptTouchEvent处理,而是全部(包括down事件)全部交由该层的onTouchEvent去处理。这样,目标View就接收不到任何事件。

2.false 按下去的down事件被onInterceptTouchEvent处理完之后返回false,之后的move、up等方法会继续交由onInterceptTouchEvent处理,然后全部(包括down事件)往下传递,直到交由目标View的onTouchEvent去处理。

3.super.onInterceptTouchEvent()与返回false一样。


三、onTouchEvent()的三个返回值:

1.false 如果最终需要处理事件的View的onTouchEvent()返回了false,那么该事件将被传递至其上一层次的View的onTouchEvent()处理。

2.true 如果最终需要处理事件的View的onTouchEvent()返回了true,那么后续事件将可以继续传递给该View的onTouchEvent()处理。   

3.super.onTouchEvent() 与返回true一样。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值