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

来源:互联网 发布:皮影客动画软件下载 编辑:程序博客网 时间:2024/06/07 05:58

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


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

 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一样。

原创粉丝点击