浅谈android单击和键盘事件
一,    概念和种类    1
二,    事件的用法。    1
三,    事件的过程及原理    2
四,    android事件的常用方法    3
1)    onClick:按钮单击事件。    3
2)    onLongClick:长按事件。    3
3)    onCreateContextMenu:上下文菜单事件。    4
4)    onFocusChange:焦点事件。    5
5)    onTouchEvent:触屏事件。    5
6) onKeyUp、onKeyDown:键盘或遥控事件。    6
7) onTrackballEvent:轨迹球事件。    6
一, 概念和种类
事件是用户与应用的UI交互的动作。在android中有许许多多的事件,即使是一个简单的单击事件,也有按下、弹起、长按之分。它们以监听接口和基于回调方式进行划分的。下面列出几种常用的事件:
1, onClick:按钮单击事件。
2, onLongClick:长按事件。
3, onCreateContextMenu:上下文菜单事件。
4, onFocusChange:焦点事件。
5, onTouchEvent:触屏事件。
6, onKeyUp、onKeyDown:键盘或遥控事件。
7, onTrackballEvent:轨迹球事件。
二, 事件的用法。
在android平台中,每个View都有自己处理事件的回调方法,开发人员只需要重写这些回调方法,就可以实现需要的响应事件。
上图是一个简单的应用实例。程序的主入口是MainActivity,与之对应的布局文件是res/l ,在布局文件中有一个id为button的按钮。
单击事件只需要注册相应的(setOnClickListener)监听事件的来源,当事件发生时作出相应的处理。
键盘或遥控事件只需重写父类Activity的(onKeyDown)方法(父类已经封装好了接口),通过接收不同的键值作出相应的处理。
三, 事件的过程及原理
事件过程原理:
1, 为事件源对象添加监听,这样当某个事件被触发时,系统才会知道通知谁来处理该事件,如图(A)所示。
2, 当事件发生时,系统会将事件封装成相应类型的事件对象,并发送给注册到事件源的事件,如图(B)所示。
3, 当对象接收到事件对象之后,系统会调用中相应的事件处理方法来处理事件并给出响应,如图(C)所示。
事件机制原理:421事件是什么意思
通过上面事件过程原理的描述,我们大概能明白处理事件的一般步骤。下面我们就来分析系统是如何监听到一个输入设备事件的,又是利用何种方式将这种事件层层传递给应用层并作出响应的。这是个看似简单的过程,实际浩大的工程,我们且称之为事件系统或事件机制。
下图为android事件大体传递过程:
下图为android事件具体实现过程:
如图示,自下而上层层剖析:
系统在启动过程中会加载驱动程序。
加载驱动程序时会进入到EventHub(文件位置:/frameworks/base/libs/ui/EventHub.cpp),会执行openPlatformInput(void)这一函数(函数位置:文件的第421~454行),该函数主要功能是扫描/dev/input目录,获取输入设备(/dev/input下通常是关于Event类型的驱动设备)。通过不断循环读取目录文件,最后通过open_device()打开设备。
EventHub实现了对驱动程序的控制,并从中获得信息KeyLayout(按键布局)和KeyCharacterMap(按键字符映射)。定义按键布局和按键字符映射需要运行时配置文件的支持,它们的后缀名分别为kl和kcm