android 处理按键动作
来源:互联网 发布:手机徒步软件 编辑:程序博客网 时间:2024/05/20 15:38
编写:zhaochunqi - 原文:http://developer.android.com/training/keyboard-input/commands.html
当用户选中一个可编辑的文本 view(如 EditText 组件),而且用户连接了一个实体键盘时,所有输入由系统处理。然而,如果我们想接管或直接处理键盘输入,那么可以通过实现 KeyEvent.Callback 接口的回调方法,如 onKeyDown() 和 onKeyMultiple() 来完成上述目的。
因为 Activity 和 View 类都实现了 KeyEvent.Callback 接口,所以通常我们应该在这些类的继承中重写回调方法。
Note: 当使用 KeyEvent 类和相关的 API 处理键盘事件时,我们应该期望这种键盘事件只从实体键盘发出。我们永远不应该依赖从一个软输入法(如屏幕键盘)来接收按键事件。
处理单个按键事件
处理单个的按键点击,需要适当地实现 onKeyDown() 或 onKeyUp()。通常,我们使用 onKeyUp() 来确保我们只接收一个事件。如果用户点击并按住按钮不放,onKeyDown() 会被调用多次。
举例,这个实现响应一些键盘按键来控制游戏:
@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_D: moveShip(MOVE_LEFT); return true; case KeyEvent.KEYCODE_F: moveShip(MOVE_RIGHT); return true; case KeyEvent.KEYCODE_J: fireMachineGun(); return true; case KeyEvent.KEYCODE_K: fireMissile(); return true; default: return super.onKeyUp(keyCode, event); }}
处理修饰键
为了对修饰键(例如将一个按键与 Shift 或者 Control 键组合)进行回应,我们可以查询 KeyEvent 来传递到回调方法。一些方法,如 getModifiers() 和 getMetaState(),提供一些关于修饰键的信息。然而,最简单的解决方案是用像 isShiftPressed() 和 isCtrlPressed() 等方法,检查我们关心的修饰键是否正在被按下。
例如,有一个 onKeyDown() 的实现,当Shift键和一个其他按键按下时,做一些额外的处理:
@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode) { ... case KeyEvent.KEYCODE_J: if (event.isShiftPressed()) { fireLaser(); } else { fireMachineGun(); } return true; case KeyEvent.KEYCODE_K: if (event.isShiftPressed()) { fireSeekingMissle(); } else { fireMissile(); } return true; default: return super.onKeyUp(keyCode, event); }
}
转自:http://hukai.me/android-training-course-in-chinese/input/keyboard-input/commands.html
- android 处理按键动作
- 动作、按键
- android中的按键处理
- Android 按键处理
- 关于Android按键处理
- android 按键处理
- Android事件处理--按键
- android中的按键处理
- android 按键处理
- android 按键处理
- Android按键消息处理
- android 按键处理
- Android按键处理
- Android按键消息处理
- Android 按键消息处理
- android 按键处理流程
- android的按键处理
- Android 按键消息处理
- git代理设置
- 解决vlc播放UDP发送的RTP封装H.264码流
- 首页对应的模板,以及对应的类
- MKNetworkKit 使用
- leetcode 132 —— Palindrome Partitioning II
- android 处理按键动作
- JSP JDBC 连接 SqlServer2008
- Visual C#2010学习笔记六之运算符的重载
- 《开源框架那些事儿27》:一段SQL引发的性能危机及其背后隐藏的设计缺
- QQ做第三方登录
- C语言常用代码(To be continue...)
- 剖析 sql server 执行计划(Dissecting SQL Server Execution Plans) 1.1
- Integrating VMware ESXi with OpenStack & OpenContrail
- python模块的打包