本篇短文只是针对几个事件分发方法的返回值做解释,详细的事件分发学习需搜索大神的文章(网上有很多)。
事件分发的几个主要方法有:
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一样。
本文详细解释了Android中事件分发的关键方法,包括dispatchOnTouchEvent()、onInterceptTouchEvent()和onTouchEvent()的返回值含义。这些方法决定了事件如何在View层次中传递和处理。通过对返回值的理解,可以更好地掌握事件处理流程。
1297

被折叠的 条评论
为什么被折叠?



