Saat pengguna memberikan fokus pada tampilan teks yang dapat diedit, seperti
elemen
EditText
, dan pengguna memasang keyboard hardware, semua
input akan ditangani oleh sistem. Namun, jika Anda ingin memotong
atau menangani input keyboard secara langsung, Anda dapat melakukannya dengan menerapkan metode callback
dari antarmuka
KeyEvent.Callback
, seperti onKeyDown()
dan onKeyMultiple()
.
Class Activity
dan View
mengimplementasikan
antarmuka KeyEvent.Callback
, sehingga Anda
umumnya mengganti metode callback dalam ekstensi class ini, sebagaimana mestinya.
Catatan: Saat menangani peristiwa keyboard dengan
class KeyEvent
dan API terkait,
perkirakan bahwa peristiwa keyboard hanya berasal dari keyboard hardware. Jangan pernah mengandalkan penerimaan peristiwa
tombol untuk tombol apa pun pada metode input virtual (keyboard virtual).
Menangani peristiwa penting tunggal
Untuk menangani penekanan tombol individual, implementasikan
onKeyDown()
atau onKeyUp()
,
sesuai kebutuhan. Biasanya, Anda menggunakan
onKeyUp()
jika ingin memastikan bahwa Anda hanya menerima satu peristiwa. Jika pengguna menekan dan menahan tombol,
onKeyDown()
akan dipanggil beberapa kali.
Misalnya, implementasi ini akan merespons beberapa tombol keyboard untuk mengontrol game:
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); } }
Menangani kunci pengubah
Untuk merespons peristiwa tombol pengubah, seperti saat tombol digabungkan dengan Shift
atau Control, Anda dapat
membuat kueri KeyEvent
yang diteruskan ke metode callback. Beberapa metode
memberikan informasi tentang tombol pengubah, seperti
getModifiers()
dan getMetaState()
.
Namun, solusi yang paling sederhana adalah memeriksa apakah
kunci pengubah yang Anda inginkan ditekan dengan metode seperti
isShiftPressed()
dan isCtrlPressed()
.
Misalnya, berikut adalah implementasi onKeyUp()
lagi, dengan penanganan tambahan saat tombol Shift ditekan dengan salah satu tombol:
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); } }
Referensi lainnya
- Keyboard Shortcuts Helper: Layar sistem yang memungkinkan pengguna menelusuri pintasan keyboard yang ditawarkan aplikasi Anda.