Kullanıcı, EditText
öğesi gibi düzenlenebilir bir metin görünümüne odaklandığında ve kullanıcının bağlı bir donanım klavyesi varsa tüm girişler sistem tarafından işlenir. Ancak klavye girişini doğrudan kendiniz ele almak veya müdahale etmek istiyorsanız KeyEvent.Callback
arabiriminde onKeyDown()
ve onKeyMultiple()
gibi geri çağırma yöntemleri uygulayarak bunu yapabilirsiniz.
Hem Activity
hem de View
sınıfları KeyEvent.Callback
arayüzünü uygular. Bu nedenle, genellikle bu sınıfların uzantısındaki geri çağırma yöntemlerini uygun şekilde geçersiz kılarsınız.
Not: KeyEvent
sınıfı ve ilgili API'lerle klavye etkinliklerini işlerken klavye etkinliklerinin yalnızca donanım klavyesinden gelmesini bekleyin. Hiçbir zaman yumuşak giriş yöntemindeki (dokunmatik klavye) herhangi bir tuşa ait tuş etkinlikleri alacağınızı varsaymayın.
Tek tuşla ilgili etkinlikleri işleme
Tek bir tuş basımını işlemek için uygun şekilde onKeyDown()
veya onKeyUp()
'ı uygulayın. Genellikle, yalnızca bir etkinlik aldığınızdan emin olmak istiyorsanız onKeyUp()
kullanırsınız. Kullanıcı bir tuşa basıp tutarsa onKeyDown()
birden çok kez çağrılır.
Örneğin, bu uygulama bir oyunu kontrol etmek için bazı klavye tuşlarına yanıt verir:
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); } }
Değiştirici tuşları işleme
Bir tuşun Üst Karakter veya Denetleyici ile birlikte kullanılması gibi değiştirici tuş etkinliklerine yanıt vermek için geri çağırma yöntemine iletilen KeyEvent
öğesini sorgulayabilirsiniz. getModifiers()
ve getMetaState()
gibi değiştirici tuşlar hakkında bilgi sağlayan çeşitli yöntemler vardır.
Ancak en basit çözüm, isShiftPressed()
ve isCtrlPressed()
gibi yöntemlerle ilgilendiğiniz tam değiştirici anahtara basılıp basılmadığını kontrol etmektir.
Örneğin, onKeyUp()
uygulamasının Üst Karakter tuşu tuşlardan biriyle basılı tutulduğunda ek işleme eklenmiş halini aşağıda bulabilirsiniz:
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); } }
Ek kaynaklar
- Klavye Kısayol Yardımcısı: Kullanıcıların uygulamanızın sunduğu klavye kısayollarını aramasına olanak tanıyan sistem ekranı.