文档章节

android 事件传递

y
 yanglingui
发布于 2017/02/08 11:53
字数 713
阅读 26
收藏 0

1.事件传递的分类

1>按键事件处理

     当按键的按下:  驱动层先使用的

2>触摸事件处理

    

2.点击按键的传递方向

 

当开始 按下某个按键 的时候 先是驱动层先知道的 然后依次向下传递

1)如果return false :  将 "事件" 不会经过Activity 也就是 (MainActivity的父类),而是一层一层的返   回给驱动层 .

2)如果return true : 就是防止 "事件" 继续传递而是拦截下来 只在MainActivity 中处理

3)如果return super.onKeyDown(keycode,event) 这就是交给了Activity处理 (注意acitivy里的代码是谷歌工程师写的 它也得需要判断是自己处理还是需要返回给系统) 如果你按的 是返回键的时候 就return true 自己处理 记录一下 待到up的时候 finish了 如果不是 return false;

一般应用在app应用程序中,双击退出

private long lastTime = -1;
    //按键按下
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        Log.e(Tag,">>>>>> onKeyDown");
        if (keyCode == event.KEYCODE_BACK){
            if (System.currentTimeMillis()-lastTime>2000){
                Toast.makeText(this,"在按一次退出",Toast.LENGTH_LONG).show();
                lastTime = System.currentTimeMillis();
            }else{
                finish();
            }
        }
        return true;
    }

 

3.长按事件是什么时候发生的呢?

长按事件是在activity中捕获的 , 所以在按下的时候必须返回super的方法,

当计数2次的时候才会调用onkeyLongPress()

event.startTracking();
return true;
onKeyLongPress(int keyCode, KeyEvent event)

如果只记录1次 当调用up的时候就会finish();

    4.触摸事件主要有几种形式?

1) 1>down   2>move  3>up  4>pointer_down  多指

2)事件也是从上到下逐层传递的

3)第一个接受到 "事件" 的是 "省长" 的 "秘书" 它有个行为: onInterceptTouch() 拦截

     有2种结果

return true :拦截 给 "省长" 处理   onTouch()

return false : 不拦截 交给下级"市长"的"秘书" 

4)"市长"的"秘书"  它有个行为: onInterceptTouch() 拦截

     有2种结果

return true : 拦截 给 "市长" 处理 onTouch()

return false: 不拦截 交给  "农民"(最低层的是没有"秘书"的)

5) "农民" onTouch() 处理

     返回2种结果

return false : "农民" 处理不了 -->把"事件"传递给"市长"

return true : 自己处理了

6)"市长" onTouch() 处理

    返回2种结果

return false : " 市长 " 处理不了 -->把"事件"传递给"省长"

return true : 自己处理了

7)"省长"onTouch() 处理

    返回2种结果

return false : " 省长长 " 处理不了 -->把"事件"传递给"系统"

return true : 自己处理了

8)触摸事件在默认的情况下是不需要拦截的

9)如果"农民" 不能把事件处理了 那么以后所有的所有"类型"的"事件"都不会交给"农民".

© 著作权归作者所有

上一篇: ndk的学习(2)
下一篇: java的学习---jdbc
y
粉丝 1
博文 135
码字总数 18801
作品 0
海淀
私信 提问
Android中父View和子view的点击事件的执行过程

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

火云
2015/06/11
115
0
Android Touch事件传递机制解析

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

长平狐
2012/10/09
2.1K
0
Android源码分析-点击事件派发机制

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17339857 概述 一直想写篇关于Android事件派发机制的文章,却一直没写,这两天刚好是周末,有时间了,想想写一篇吧,...

长平狐
2013/12/25
1K
0
Android 机制篇 - 事件分发机制超详解(🔥🔥🔥🔥🔥🔥🔥🔥)

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

Pepsimaxin
2018/07/12
0
0
android基础知识03——事件处理02:事件流顺序

1、android事件的产生 这一部分比较难,需要涉及android整个架构的基础知识,包括linux系统对事件的处理。 这一部分内容来自 android的窗口机制分析------事件处理 。 由于Android是linux内核...

迷途d书童
2012/03/23
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
4
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部