文档章节

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>


© 著作权归作者所有

共有 人打赏支持
上一篇: ViewPager
下一篇: android动画
粉丝 0
博文 34
码字总数 15605
作品 0
深圳
私信 提问
Android 机制篇 - 事件分发机制超详解(🔥🔥🔥🔥🔥🔥🔥🔥)

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

Pepsimaxin
2018/07/12
0
0
Android Touch事件传递机制解析

没事逛论坛,无意间看到了一篇非常不错的帖子,转载如下: 开篇语:最近程序在做一个小效果,要用到touch,结果整得云里面雾里的,干脆就好好把android touch机制好好看了一下,呵呵。。 an...

长平狐
2012/10/09
2.1K
0
安卓自定义View进阶-事件分发机制原理

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

猴亮屏
2018/05/22
0
0
Android中父View和子view的点击事件的执行过程

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

火云
2015/06/11
0
0
Android输入系统(一)输入事件传递流程和InputManagerService的诞生

本文首发于微信公众号「刘望舒」 原文链接 : Android输入系统的事件传递流程和IMS的诞生 相关文章 解析WMS系列 View体系系列 前言 很多同学可能会认为输入系统是不是和View的事件分发有些关联...

刘望舒
2018/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
1
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部