Android View事件传递机制(一)

原创 2016年08月28日 15:46:48

Android View事件传递机制(一)


需要明确的事情

  1. 用户的一次点击,会产生一个事件序列,也就是多次调用事件方法的函数。具体的说就是:一次ACTION_DOWN的事件、多个ACTION_MOVE的事件、 一个ACTION_UP的事件。
  2. 我们可以将传递过程分为两个部分,第一部分为 是否往分发事件的传递,其过程为:由父view向子view传递(也就是dispatchTouchEvent方法); 第二部分为 是否处理事件的传递,其过程为:由子view向父view传递(也就是onTouchEvent)。 onInterceptTouchEvent方法决定了第一个传递过程到哪一层结束,同时,第二个传递也就相应从这一场开始。

  3. ACTION_DOWN的事件相当于首先去寻找处理该事件的view,如果找到了,之后的事件会直接传递给该view,否则,之后的事件直接由最外层的Activity处理了。

具体的情形

注意,这里说的是down的事件。

  1. 如果 ViewViewGroupdispatchTouchEvent 返回 true ,那么该事件的传递结束,并且之后的事件序列都会只调用到该dispatchTouchEvent方法,然后结束。(不会再调用自己的onInterceptTouchEventonTouchEvent方法了。)

  2. 如果 ViewViewGrouponInterceptTouchEvent 返回 true ,那么会调用自己的onTouchEvent方法,并且继续向上传递,调用父viewonTouchEvent,直到找到一个 onTouchEvent 返回为true时停止。之后的事件就会直接传到这个onTouchEvent方法中。(之注意,之后的事件不会再调用到onInterceptTouchEvent方法)。

  3. 如果 ViewViewGrouponTouchEvent 返回 true ,是否处理事件的传递就会到此结束,不会再想起父view传递,而且之后的事件序列也就直接传到该view的onTouchEvent方法。

以上,就是view 的事件传递的宏观上的描述。可能描述的不够清楚,如果有兴趣的话,最好自己写个demo,简单的修改返回值,来进行相应的测试。只有知道了其宏观表现,对于继续深入研究时,才不会盲目不知所措。

在这一部分,主要是参考了《Android 群英会》和《Android开发艺术探索》。


以上是自己简单总结,之后会结合源码在进一步分析。

相关文章推荐

面向对象六大原则(一):单一职责原则

出处: 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导...

STL源码剖析---红黑树原理详解下

文章转自:http://blog.csdn.net/hackbuteer1/article/details/7760584       算法导论书上给出的红黑树的性质如下,跟STL源码剖析书上面的4...

Android View事件分发处理机制Demo

  • 2015年11月13日 22:59
  • 2.66MB
  • 下载

Android自定义view之事件传递机制

Android自定义view之事件传递机制 本文是自定义view入门的第二篇文章,主要讲解Android的事件分发流程,结合上一篇的绘制等流程,基本就可以掌握自定义view的核心内容。后续我会写一...

Android View事件传递机制-源码分析

先通过做个一个Demo打印一下Log看看 View的事件传递机制,以下两个View的布局及具体代码: ...

Android View 事件传递机制

原文网址:点击打开链接; 此文适合对android view 事件传递机制有一定阅读或研究的人。 如果之前没有对view机制认知过,可能会有些不理解。好了,下面贴出原文: 推荐一篇我看到的对传递机...
  • zrbcsdn
  • zrbcsdn
  • 2015年11月12日 17:58
  • 344

Android View事件传递机制

最近在开发中遇到view滑动冲突的问题,由于一开始就知道这个问题与view事件分发有关,之后在网上看了几篇关于事件分发的资料后,开发中遇到的问题很快便得到解决。 在这里总结一下我对view事件分发的...

Android View触摸事件传递机制

PS:以现在的眼光看以前写的博客感觉写的很烂,或许或一段时间再看现在的博客会有同样的感觉。所以每时每刻都去学习,去发现和理解新的东西。引言由于之前写的一篇关于Android事件传递顺序的博客质量太差,...

Android View Touch事件传递机制

Android View事件传递机制
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android View事件传递机制(一)
举报原因:
原因补充:

(最多只允许输入30个字)