文档章节

android 事件传递

y
 yanglingui
发布于 2017/02/08 11:53
字数 713
阅读 17
收藏 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
博文 132
码字总数 18615
作品 0
海淀
私信 提问
Android中父View和子view的点击事件的执行过程

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

火云
2015/06/11
0
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基础知识03——事件处理02:事件流顺序

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

迷途d书童
2012/03/23
1K
0
Android 机制篇 - 事件分发机制超详解(🔥🔥🔥🔥🔥🔥🔥🔥)

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

Pepsimaxin
07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

tomcat shutdown.sh不能完合关掉tomcat进程的解决方法

tomcat shutdown.sh不能完合关掉tomcat进程的解决方法 2017年06月30日 17:18:16 redlevin 阅读数:5311 标签: tomcatjava 1、在tomcat/bin/shutdown.sh文件中增加一个参数 原来的 exec...

linjin200
3分钟前
0
0
动态代理

//业务类接口public interface ICar { String getName();} //业务类实现public class CarImpl implements ICar { @Override public String getName() { S......

stocket
13分钟前
0
0
dubbo架构相关知识学习

dubbo架构分为十层: Service:接口层,提供服务端以及客户端实现,类ServiceBean和ReferenceBean Config:配置层,ServiceConfig和ReferenceConfig,从dubbo.xsd中属性依赖如下,我们可以看出s...

zzx10
13分钟前
0
0
devops平台搭建

一份可以同时满足传统与互联网业务的Dev平台攻略

miaojiangmin
14分钟前
0
0
windows server 2019添加开机启动项

windows server 2012以上的版本(2016,2019)在开始菜单中找不到“启动”,如果写了个bat批处理文件,如何能开机启动呢?可以打开文件资源管理器,把下面的位置粘贴到地址栏后回车。将bat文...

gugudu
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部