當使用者將焦點移至可編輯的文字檢視區塊時,例如
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()
實作
再次強調,按住 Shift 鍵並按下其中一個按鍵時,還會額外進行設定:
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); } }
其他資源
- 鍵盤快速鍵小幫手 :這個系統畫面,可讓使用者搜尋應用程式提供的鍵盤快速鍵。