文档章节

android事件处理流程

 梦想家Peng
发布于 2016/03/04 10:10
字数 413
阅读 21
收藏 0

事件处理流程由以下3个方法构成:
1) dispatchTouchEvent
2) onInterceptTouchEvent
3) onTouchEvent

默认事件处理流程为 1 -> 2 -> 3;
当控件存在嵌套关系时,默认情况下,1和2是“隧道式”的处理方式,即从最外层控件开始,分别执行1、2,然后其直接内层控件执行1、2……,而3是“冒泡式”的处理方式,即从最内层控件开始,然后由其直接父级控件执行……
3的返回值是“消费型”的,一旦返回true,则表示已经完全消费,那么,原定后续处理(父级控件的)3的将不再被执行,如果返回false,则表示未消费,那么,原定后续处理3的将继续执行,直到某个控件的3返回true或者没有更父级的控件。例如Button的单击事件就是直接消费(在3中返回true)的,所以,当在屏幕上点击按钮时,将由按钮直接处理事件,而其各父级控件将无法处理事件。

事件的消费
--------------------------------
事件的消费表示“已经完全处理了当前事件”,通常事件的消费表现为方法的boolean类型返回值,如果返回true,则表示已消费,返回false则表示未消费。


比如三个控件嵌套,最后哪个控件响应事件,由上面三个函数决定:

    <cn.tedu.event.OutterRelativLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerInParent="true"
        android:background="@android:color/holo_blue_light" >

        <cn.tedu.event.MidRelativLayout
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:layout_centerInParent="true"
            android:background="@android:color/holo_green_dark" >

            <cn.tedu.event.InnerRelativLayout
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_centerInParent="true"
                android:background="@android:color/holo_orange_dark" >
            </cn.tedu.event.InnerRelativLayout>
        </cn.tedu.event.MidRelativLayout>
    </cn.tedu.event.OutterRelativLayout>


© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 34
码字总数 15605
作品 0
深圳
Android 机制篇 - 事件分发机制超详解(🔥🔥🔥🔥🔥🔥🔥🔥)

Android 虽然不是四大组件,但其并不比四大组件的地位低(涉及面的广度和深入甚至比四大组件还复杂🔥)。而View的核心知识点“事件分发机制”则是不少刚入门同学的拦路虎(1、项目中处处遇...

Pepsimaxin
07/12
0
0
Android中父View和子view的点击事件的执行过程

Android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解。 一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTIONDOWN->ACTIONMOV...

火云
2015/06/11
0
0
安卓自定义View进阶-事件分发机制原理

安卓自定义View进阶-事件分发机制原理 之前讲解了很多与View绘图相关的知识,你可以在 安卓自定义View教程目录 中查看到这些文章,如果你理解了这些文章,那么至少2D绘图部分不是难题了,大部...

猴亮屏
05/22
0
0
android应用开发简单理解

做了个应用,总结下对于android 应用的简单理解 从上图可以简单看出,主线程启动,这里把各种操作称为action,主要分为3部分: ui(视图绘制)、event(事件处理)和other(数据或网络等处理) 1.当...

blackylin
2013/06/18
0
2
笔记KeyEvent 和 TouchEvent在 Activity和View中传递的顺序

由于一个电视机 Key事件传递出现了部分问题,但是五位方向键有时候出现问题 所以使用Activity完全接管了key事件的传递, 自己来控制焦点的变化和五位方向键的按下处理逻辑 在此温习一下key事件...

SuShine
2015/08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
19分钟前
0
0
20180921 su与sudo命令、限制root用户通过ssh远程登录

su 命令 用户切换。 su # 切换到root用户su username # 切换到username用户# su 后面加-时,会初始化当前用户的各种环境su - username # 指定用户执行某些命令 su - -c "touch /tm...

野雪球
33分钟前
1
0
Windows 下双 Python 开发环境配置

Windows 下双 Python 开发环境配置作者:老农民(刘启华)QQ: 46715422Email: 46715422@qq.com微信: 46715422 本人曾经在 Windows 下被两个版本环境折腾够呛,现在总结两个 Python...

新疆老农民
昨天
2
0
CentOS7全局安装composer

1. 下载composer-setup.php到当前目录 php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" 2. 安装 php composer-setup.php 3. 将composer设置成全局 mv c......

月夜中徘徊
昨天
3
0
20180920上课截图

小丑鱼00
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部