Lorsque l'utilisateur sélectionne un affichage de texte modifiable, par exemple
EditText
et que l'utilisateur dispose d'un clavier physique,
est gérée par le système. Toutefois, si vous souhaitez intercepter
ou gérer vous-même la saisie au clavier, vous pouvez le faire en implémentant des méthodes de rappel
à partir de KeyEvent.Callback
d'interface, telle que onKeyDown()
et onKeyMultiple()
.
Les Activity
et les classes View
implémentent les
KeyEvent.Callback
. Vous pouvez donc
remplacent généralement les méthodes de rappel dans l'extension de ces classes,
approprié.
Remarque:Lorsque vous gérez les événements de clavier avec la commande
KeyEvent
et les API associées,
s'attendent à ce que les événements de clavier
provient uniquement d'un clavier matériel. Ne jamais compter sur la réception de clés
pour n'importe quelle touche d'un mode de saisie logicielle (clavier à l'écran).
Gérer des événements clés uniques
Pour gérer une pression individuelle sur une touche, implémentez
onKeyDown()
ou onKeyUp()
,
le cas échéant. Habituellement, vous utilisez
onKeyUp()
pour être sûr de ne recevoir qu'un seul événement. Si l'utilisateur appuie
et maintient une touche,
onKeyDown()
est alors appelé plusieurs fois.
Par exemple, cette implémentation répond à certaines touches du clavier pour contrôler un jeu:
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); } }
Gérer les touches de modification
Pour répondre à des événements de touche de modification, par exemple lorsqu'une touche est combinée avec Maj
ou Contrôle, vous pouvez
interroger KeyEvent
transmis à la méthode de rappel. Plusieurs méthodes
fournissent des informations sur les touches de modification,
getModifiers()
et getMetaState()
.
Toutefois, la solution la plus simple consiste à vérifier
la touche de modification exacte qui vous intéresse est appuyée par des méthodes
isShiftPressed()
et isCtrlPressed()
.
Par exemple, voici l'implémentation de onKeyUp()
.
Encore une fois, en cas de maintien de la touche Maj enfoncée avec l'une des touches:
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); } }
Ressources supplémentaires
- <ph type="x-smartling-placeholder"></ph> Aide aux raccourcis clavier : un écran système qui permet aux utilisateurs de rechercher les raccourcis clavier proposés par votre application.