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开发艺术探索》。


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

Android Touch事件传递机制全面解析(从WMS到View树)

转眼间近一年没更新博客了,工作一忙起来,很难有时间来写博客了,由于现在也在从事Android开发相关的工作,因此以后的博文也会更多地专注于这一块。 这篇文章准备从源码层面为大家带来Touch事件的传...
  • mmc_maodun
  • mmc_maodun
  • 2015年12月21日 07:43
  • 8371

Android触摸屏事件派发机制详解与源码分析一(View篇)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!【工匠若水 http://blog.csdn.net/yanbobe...
  • yanbober
  • yanbober
  • 2015年05月21日 17:03
  • 51045

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

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

Android View触摸事件传递机制 一

Android View触摸事件传递机制 一最近在工作中遇到了这方面的需求, 对这方面一开始虎头虎脑的搞了好几天, 总感觉这方面的知识点不太容易被理解(今早看了下午就忘了), 理解不透彻, 主要记录下...
  • qq_28725503
  • qq_28725503
  • 2017年06月19日 20:15
  • 159

Android事件分发传递回传机制详解

如果想参与实际开发项目,若不理解事件分发回传机制的话,几乎等于“”摸黑抓鳅”,因为几乎每个项目都会出现滑动冲突问题;而要想解决滑动冲突问题,必须先了解甚至掌握事件分发传递机制。等到了解决滑动冲突时,至...
  • qq_32059827
  • qq_32059827
  • 2016年09月18日 22:54
  • 1405

Android事件分发机制完全解析,带你从源码的角度彻底理解(下) (出自郭林老师)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9153761 记得在前面的文章中,我带大家一起从源码的角度分析了And...
  • xiashuangyuan1
  • xiashuangyuan1
  • 2017年05月17日 23:09
  • 230

Android View Touch事件传递机制

Android View事件传递机制
  • zhouhnwen
  • zhouhnwen
  • 2016年09月21日 11:31
  • 209

几行代码看懂android View的事件传递机制(视图逻辑)

安卓的视图事件传递机制。
  • u011216417
  • u011216417
  • 2017年01月16日 16:22
  • 386

Android View 触摸事件传递机制

Android View 触摸事件传递机制 分类: andorid 开发2015-07-29 21:27 66人阅读 评论(0) 收藏 举报 触摸事件touchonTouch事件传...
  • xdgs_2005
  • xdgs_2005
  • 2015年07月30日 10:48
  • 237

Android View事件传递机制

最近在开发中遇到view滑动冲突的问题,由于一开始就知道这个问题与view事件分发有关,之后在网上看了几篇关于事件分发的资料后,开发中遇到的问题很快便得到解决。 在这里总结一下我对view事件分发的...
  • kaifa1321
  • kaifa1321
  • 2016年03月29日 11:44
  • 770
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android View事件传递机制(一)
举报原因:
原因补充:

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