ViewGroup之onInterceptTouchEvent方法

概念介绍

onInterceptTouchEvent是ViewGroup中的方法,作用是系统向该ViewGroup及其各个ChildView触发onTouchEvent方法之前对相关事件的一次拦截。 具体的讲: 1、ACTION_DOWN事件会首先传递到ViewGroup中的onInterceptTouchEvent方法中 如果onInterceptTouchEvent处理完ACTION_DOWN事件返回false,则系统还会将该ACTION_DOWN事件传到目标View当中 如果onInterceptTouchEvent处理完ACTION_DOWN事件返回true,则系统不会将该ACTION_DOWN事件传到目标View中的onTouchEvent方法中,就会调用ViewGroup中自己的onTouchEvent方法处理。 2、前提:ViewGroup中的onInterceptTouchEvent处理完ACTION_DOWN事件返回false,后续的ACTION_MOVE事件同样先传递到onInterceptTouchEvent中 如果onInterceptTouchEvent处理完ACTION_MOVE返回false,,则系统还会将ACTION_MOVE事件传递到目标View中的onTouchEvent方法中。 如果onInterceptTouchEvent处理完ACTION_MOVE返回true,则系统不会将ACTION_MOVE事件传递到目标View中的onTouchEvent方法中,而是传递ACTION_CANCEL事件到目标View的onTouchEvent方法中,只传递一次,此后与目标View没有任何关系(包括最后的ACTION_UP事件),只调用ViewGroup中的onTouchEvent方法。 3、前提:ViewGroup中的onInterceptTouchEvent处理完ACTION_DOWN事件返回true 后续的ACTION_MOVE、ACTION_UP事件将不再调用该ViewGroup中的onInterceptTouchEvent方法,直接将这些事件传递给该ViewGroup中的onTouchEvent处理。 4、目标View的onTouchEvent返回false,则系统将该事件传递至上一层View的onTouchEvent处理。 5、目标View的onTouchEvent返回true,则后续事件可以继续传递给该View的onTouchEvent处理。 写这些东西才发现,确实一些东西只可意会,不可言传!

实验证明

LayoutView1、LayoutView2是自定义的LayoutView,TextView1是自定义的TextView 视图分为3层,LayoutView1包括LayoutView2,LayoutView2包括TextView1。 具体测试结果如下: 1、ViewGroup中onInterceptTouchEvent()处理down事件均返回false,onTouchEvent()处理事件均返回true。

由图可知,LayoutView1、LayoutView2中的onInterceptTouchEvent()均返回false时,LayoutView1和LayoutView2的onTouchEvent并不会收到事件,而是最终传递给了TextView1。 2、LayoutView1中的onInterceptTouchEvent处理ACTION_DOWN事件返回true,TextView1中的onTouchEvent返回true。

由图可知,LayoutView1在第一次拦截到ACTION_DOWN是返回true,因此后续事件将由自身的onTouchEvent方法处理。 3、LayoutView1,LayoutView2的onInterceptTouchEvent()处理down事件返回false,TextView1的onTouchEvent()处理事件返回false,LayoutView2的onTouchEvent()处理事件返回true。

由图可知,由于TextView在onTouchEvent中返回false,ACTION_DOWN事件传递给父View(LayoutView2),由LayoutView2中的onTouchEvent方法处理,因为该方法返回true,因此ACTION_DOWN事件并没有上传到LayoutView1。因此,后续的ACTION_MOVE、ACTION_UP事件均传递到LayoutView2的onTouchEvent方法中。 代码下载

不必在乎目的地,在乎的是沿途的风景以及看风景的心情,让心灵去旅行!

ViewGroup之onInterceptTouchEvent方法

相关文章:

你感兴趣的文章:

标签云: