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.
Einzelne Schlüsselereignisse 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 verarbeiten
Wenn Sie auf Modifikatortastenereignisse reagieren möchten, z. B. wenn eine Taste mit der Umschalttaste oder der Strg-Taste kombiniert wird, können Sie KeyEvent
abfragen, die an die Rückrufmethode ü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
- Hilfe zu Tastenkombinationen: Systembildschirm, auf dem Nutzer nach den Tastenkombinationen suchen können, die Ihre App bietet.