Wenn der Nutzer den Fokus auf eine bearbeitbare Textansicht legt, z. B. ein EditText
-Element, und eine Hardwaretastatur angeschlossen hat, wird die gesamte Eingabe vom System verarbeitet. Wenn Sie die Tastatureingabe jedoch selbst abfangen oder direkt verarbeiten möchten, können Sie Rückrufmethoden aus der KeyEvent.Callback
-Schnittstelle implementieren, z. B. onKeyDown()
und onKeyMultiple()
.
Sowohl die Activity
- als auch die View
-Klasse implementieren die KeyEvent.Callback
-Schnittstelle. Daher überschreiben Sie in der Regel die Rückrufmethoden in der Erweiterung dieser Klassen.
Hinweis:Wenn Sie Tastaturereignisse mit der Klasse KeyEvent
und den zugehörigen APIs verarbeiten, gehen Sie davon aus, dass die Tastaturereignisse nur von einer Hardwaretastatur stammen. Verlassen Sie sich niemals darauf, dass Sie Tastenereignisse für eine Taste einer Soft-Eingabemethode (Bildschirmtastatur) erhalten.
Ereignisse mit einem Schlüssel verarbeiten
Wenn Sie eine einzelne Tastenaktivierung verarbeiten möchten, implementieren Sie onKeyDown()
oder onKeyUp()
. Normalerweise verwenden Sie onKeyUp()
, wenn Sie sicherstellen möchten, dass Sie nur ein Ereignis erhalten. Wenn der Nutzer eine Taste gedrückt hält, wird onKeyDown()
mehrmals aufgerufen.
Bei dieser Implementierung reagiert das Spiel beispielsweise auf einige Tasten der Tastatur:
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); } }
Modifikatortasten bedienen
Wenn Sie auf Ereignisse bei Modifikatortasten reagieren möchten, z. B. wenn eine Taste mit Umschalt oder Strg kombiniert wird, können Sie den KeyEvent
abfragen, der an die Callback-Methode übergeben wird. Es gibt mehrere Methoden, um Informationen zu Modifikatortasten wie getModifiers()
und getMetaState()
zu erhalten.
Am einfachsten ist es jedoch, mithilfe von Methoden wie isShiftPressed()
und isCtrlPressed()
zu prüfen, ob der gewünschte Modifikatorschlüssel gedrückt wird.
Hier ist beispielsweise die onKeyUp()
-Implementierung noch einmal, mit einer zusätzlichen Verarbeitung, wenn die Umschalttaste zusammen mit einer der Tasten gedrückt wird:
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); } }
Weitere Informationen
- Keyboard Shortcuts Helper : Ein Systembildschirm, auf dem Nutzer nach den Tastenkombinationen suchen können, die in deiner App angeboten werden.