用户将焦点移到可编辑的文本视图(如
EditText
元素,并且用户连接了硬件键盘,那么
由系统处理输入。但是,如果您想拦截
或直接自行处理键盘输入,可通过实现回调方法来实现
KeyEvent.Callback
起
接口,例如 onKeyDown()
和 onKeyMultiple()
。
Activity
和 View
类会实现
KeyEvent.Callback
接口,因此您可以
通常替换这些类的扩展中的回调方法,
适当的选择。
注意:使用
KeyEvent
类及相关 API,
预计键盘事件仅来自硬件键盘。绝不依赖于接收密钥
事件。
处理单个按键事件
如需处理单个按键操作,请实现
onKeyDown()
或 onKeyUp()
,
视情况而定。通常情况下,您可以使用
onKeyUp()
。如果用户按住某个键,
则会多次调用 onKeyDown()
。
例如,以下实现可以响应某些键盘按键以控制游戏:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_D -> { moveShip(MOVE_LEFT) true } KeyEvent.KEYCODE_F -> { moveShip(MOVE_RIGHT) true } KeyEvent.KEYCODE_J -> { fireMachineGun() true } KeyEvent.KEYCODE_K -> { fireMissile() true } else -> super.onKeyUp(keyCode, event) } }
Java
@Override public 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()
。
例如,以下是 onKeyUp()
实现
针对以下情况之一进行额外处理:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { ... KeyEvent.KEYCODE_J -> { if (event.isShiftPressed) { fireLaser() } else { fireMachineGun() } true } KeyEvent.KEYCODE_K -> { if (event.isShiftPressed) { fireSeekingMissle() } else { fireMissile() } true } else -> super.onKeyUp(keyCode, event) } }
Java
@Override public 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); } }
其他资源
- <ph type="x-smartling-placeholder"></ph> 键盘快捷键辅助工具 :一个系统屏幕,可供用户搜索应用提供的键盘快捷键。