文档章节

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)如果"农民" 不能把事件处理了 那么以后所有的所有"类型"的"事件"都不会交给"农民".

© 著作权归作者所有

共有 人打赏支持
y
粉丝 1
博文 130
码字总数 18154
作品 0
海淀
Android中父View和子view的点击事件的执行过程

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

火云
2015/06/11
0
0
Android view事件分发初步

点击事件用MotionEvent表示,最重要的事件分别是: 手指按下:ACTION_DOWN 手指移动:ACTION_MOVE 手指抬起:ACTION_UP 点击事件的分发始于Activity,通过Window,然后再传递到View MotionEv...

京一
08/19
0
0
Android 机制篇 - 事件分发机制超详解(🔥🔥🔥🔥🔥🔥🔥🔥)

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

Pepsimaxin
07/12
0
0
监听android:drawableLeft和android:drawableRight点击事件

监听android:drawableLeft和android:drawableRight点击事件 Android官方没有提供对android:drawableLeft和android:drawableRight点击事件的监听,但有些情况下,如下面的搜索栏, 需要在用户...

zhangphil
04/17
0
0
安卓自定义View进阶-事件分发机制原理

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

猴亮屏
05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安全管理标准

安全生产严重等级分类: 故障频次: 风险等级矩阵:

乔老哥
14分钟前
1
0
数据结构“树”的相关微视频

今天在腾讯视频上闲逛,然後发现一个叫“岚人”的用户上传了几段小视频,基本上都在5分钟以内,讲解了关于树的一些结构和算法。零代码,非常适合初学者入门。不过,对于老鸟来说,这也是非常...

Iridium
26分钟前
0
0
10-利用思维导图梳理JavaSE-Java 集合

10-利用思维导图梳理JavaSE-Java 集合 主要内容 1.Collection接口 2.Set接口 2.1.Set接口概述 2.2.HashSet类 2.3.TreeSet类 2.4.SortedSet接口 3.List接口 3.1.List接口概述 3.2.ArrayList类...

飞鱼说编程
37分钟前
3
0
活动推荐|互联网3.0与区块链新时代论坛(北京)

1 时间地点 **时间:**9月22日 14:00 - 18:00 地点:(北京海淀)西大街70号 3w咖啡 二层 2 活动详情 Harmony创始人Stephen及团队将介绍他们的区块链分片扩容技术。Stephen曾任Apple地图服务...

HiBlock
55分钟前
1
0
如何优雅的删除Redis的大key

关于Redis大键(Key),我们从[空间复杂性]和访问它的[时间复杂度]两个方面来定义大键。前者主要表示Redis键的占用内存大小;后者表示Redis集合数据类型(set/hash/list/sorted set)键,所含有的...

IT--小哥
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部