本文来自:安卓航班网

ANDROID事件触发机制
首先,这篇文章仅仅针对于由于触摸(Touch)而触发的事件。
Android的事件:onClick, onScroll, onFling等等,都是由许多个Touch组成的。其中Touch的第一个状态肯定是ACTION_DOWN, 表示按下了屏幕。之后,touch将会有后续事件,可能是:
ACTION_MOVE //表示为移动手势
ACTION_UP //表示为离开屏幕
ACTION_CANCEL //表示取消手势,不会由用户产生,而是由程序产生的
一个Action_DOWN, n个ACTION_MOVE, 1个ACTION_UP,就构成了Android中众多的事件。
在Android中,有一类控件是中还可以包含其他的子控件,这类控件是继承于ViewGroup类,例如:ListView, Gallery, GridView。
还有一类控件是不能再包含子控件,例如:TextView。
本文的主要讨论对象就是ViewGroup类的控件嵌套时事件触发情况。
对于ViewGroup类的控件,有一个很重要的方法,就是onInterceptTouchEvent(),用于处理事件并改变事件的传递方向,它的返回值是一个布尔值,决定了Touch事件是否要向它包含的子View继续传递,这个方法是从父View向子View传递。
而方法onTouchEvent(),用于接收事件并处理,它的返回值也是一个布尔值,决定了事件及后续事件是否继续向上传递,这个方法是从子View向父View传递。
touch事件在 onInterceptTouchEvent()和onTouchEvent以及各个childView间的传递机制完全取决于onInterceptTouchEvent()和onTouchEvent()的返回值。返回值为true表示事件被正确接收和处理了,返回值为false表示事件没有被处理,将继续传递下去。
ACTION_DOWN事件会传到某个ViewGroup类的onInterceptTouchEvent,如果返回false,则DOWN事件继续向子ViewGroup类的onInterceptTouchEvent传递,如果子View不是ViewGroup类的控件,则传递给它的onTouchEvent。
如果onInterceptTouchEvent返回了true,则DOWN事件传递给它的onTouchEvent,不再继续传递,并且之后的后续事件也都传递给它的onTouchEvent。
如果某View的onTouchEvent返回了false,则DOWN事件继续向其父ViewGroup类的onTouchEvent传递;如果返回了true,则后续事件会直接传递给其onTouchEvent继续处理。(后续事件只会传递给对于必要事件ACTION_DOWN返回了true的onTouchEvent)
总结一下就是:onInterceptTouchEvent可以接受到所有的Touch事件,而onTouchEvent则不一定。

原文地址:http://www.apkway.com/forum.php?mod=viewthread&tid=2416&extra=page%3D1

转载于:https://www.cnblogs.com/yyq-quan/archive/2011/08/01/2124079.html

ANDROID事件触发机制相关推荐

  1. Android事件分发机制详解

    2019独角兽企业重金招聘Python工程师标准>>> 之前在学习Android事件方法机制的时候,看过不少文章,但是大部分都讲的不是很清楚,我自己理解的也是云里雾里,也尝试过阅读源 ...

  2. android触摸事件分发,Android 事件分发机制

    Android 事件分发机制一直让人头痛,之前也是面向 GitHub 编程得过且过.今天下定决心了解一下,以便后面自己定制 View 效果.Android 触摸事件有三个基本类型:ACTION_DOW ...

  3. 【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9153761 记得在前面的文章中,我带大家一起从源码的角度分析了Android中Vi ...

  4. 浅谈Android事件分发机制

    在Android实际开发过程中经常会遇到View之间的滑动冲突,如ScrollView与Listview.RecyclerView之间的嵌套使用.在很好的解决此类问题之前,我们应深入的了解Androi ...

  5. Android 事件分发机制

    Android 事件分发机制  demo验证:  https://blog.csdn.net/hty1053240123/article/details/77866302 目录 1.基础认知 2.事件 ...

  6. Android事件分发机制:基础篇:最全面、最易懂

    如何提升安卓水平?安卓开发者必须了解的事件分发机制. 最全面.最易懂的形式来讲解Android事件分发机制. 0. 前言 鉴于安卓分发机制较为复杂,故分为多个层次进行讲解,分别为基础篇.实践篇与高级篇 ...

  7. Android 系统(199)---Android事件分发机制详解

    Android事件分发机制详解 前言 Android事件分发机制是Android开发者必须了解的基础 网上有大量关于Android事件分发机制的文章,但存在一些问题:内容不全.思路不清晰.无源码分析. ...

  8. 一篇文章彻底搞懂Android事件分发机制

    本文讲的是一篇文章彻底搞懂Android事件分发机制,在android开发中会经常遇到滑动冲突(比如ScrollView或是SliddingMenu与ListView的嵌套)的问题,需要我们深入的了解 ...

  9. 【朝花夕拾】Android自定义View篇之(六)Android事件分发机制(中)从源码分析事件分发机制...

    前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/11039252.html]谢谢! 在上一篇文章[[朝花夕拾]Android自定义View篇之(五 ...

最新文章

  1. 2023年中国AI论文影响力超越美国?网友:长期看,数量不等于质量
  2. DevOps:软件架构师行动指南1.7 障碍
  3. 如何查看电脑显卡配置_组装电脑:电脑配置显卡推荐
  4. SpringMVC中使用@ResponseBody注解标注业务方法
  5. Python函数的参数传递方式
  6. 解决上左右页面框架中iframe的引起的滚动条问题
  7. VS2015:出现devenv.sln解决方案保存对话框
  8. 科技文献检索(六)——检索语言
  9. html复选框变蓝,更改html复选框的背景颜色
  10. 自学C语言的步骤--菜鸟篇
  11. think PHP前台模板,thinkphp5(二)前台模板的引入
  12. android 车载蓝牙音乐介绍
  13. tp5 in_array 在 view页面用法
  14. 快手2018/9/10
  15. 牛!程序媛一口气拿下BAT、美团、vivo、爱奇艺等公司Offer面经总结
  16. 使用代理抓取反爬微信文章
  17. 《你好,数智新世界》系列访谈 对话数睿数据总裁刘超|企业级无代码赋能软件产业变革...
  18. Houdini 过程化地形系统(二):基于UE4的FC5植被系统(1)
  19. Keras神经网络实现泰坦尼克号旅客生存预测
  20. java nio netty 教程,4. 彤哥说netty系列之Java NIO实现群聊(自己跟自己聊上瘾了),netty实现...

热门文章

  1. java中long如何使用_在Java中如何使用lambda和方法引用实现LongSupplier?
  2. 期刊投稿状态_这些SCI期刊的投稿显示状态是什么意思?
  3. mysql 事务sql_mysql存储过程之事务篇
  4. linux的free会擦出磁盘吗,如何在 Linux 上检查可用的磁盘空间 | Linux 中国
  5. Python type创建类
  6. TensorFlow Attention
  7. vSAN ReadyNode™中可以(也不能)更改的内容
  8. 对象存储 OSS > 产品简介 > 什么是对象存储OSS
  9. 华为宣布今年将投入2亿美元推动鲲鹏计算产业发展
  10. Mysql学习总结(63)——Mysql数据库架构方案选择与分析