美文网首页
Android事件传递机制

Android事件传递机制

作者: Enhakkore | 来源:发表于2019-02-12 16:13 被阅读0次

一、拥有事件传递能力的类

Activity:拥有dispatchTouchEvent和onTouchEvent两个方法。

GroupView:拥有dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent三个方法。

View:拥有dispatchTouchEvent和onTouchEvent两个方法。

布局结构

二、事件分发

主要使用dispatchTouchEvent方法进行事件分发,事件分发的顺序如果下图。

事件分发顺序

不过在ViewGroup层可以通过onInterceptTouchEvent方法进行事件拦截。onInterceptTouchEvent为false表示不拦截,反之表示拦截。如果ViewGroup进行事件拦截,整个事件的分发将不再向下传递。 

事件分发机制流程图

三、事件消费

主要使用onTouchEvent方法进行事件消费,事件消费顺序如下图。

事件消费顺序

onTouchEvent方法返回true表示该层控件消耗此事件,如果返回为false则表示该层控件不消耗此事件,事件自动向上抛出。

事件处理流程图

四、requestDisallowInterceptTouchEvent方法

在子控件中使用getParent().requestDisallowInterceptTouchEvent(true)方法,表示子控件请求父控件不要消费该事件,不过如果父控件中明确使用onInterceptTouchEvent进行事件拦截,该方法将不会起到任何作用。

提示:本文知识引用来源于https://www.cnblogs.com/smyhvae/p/4802274.html和《Android高级进阶》。

相关文章

网友评论

      本文标题:Android事件传递机制

      本文链接:https://www.haomeiwen.com/subject/cjckeqtx.html