Kullanıcı, odağı EditText
öğesi gibi düzenlenebilir bir metin görünümüne verdiğinde ve kullanıcının klavyesi takılı olduğunda tüm giriş sistem tarafından işlenir. Bununla birlikte, klavye girişini kendiniz engellemek veya doğrudan işlemek isterseniz KeyEvent.Callback
arayüzünden onKeyDown()
ve onKeyMultiple()
gibi geri çağırma yöntemlerini uygulayarak bunu yapabilirsiniz.
Hem Activity
hem de View
sınıflarında KeyEvent.Callback
arayüzü uygulanır. 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: Klavye etkinliklerini KeyEvent
sınıfı ve ilgili API'lerle işlerken klavye etkinliklerinin yalnızca bir donanım klavyesinden gelmesini bekleyin. Hiçbir tuş için dokunmatik giriş yöntemine (ekran klavyesi) bağlı kalmayın.
Tek önemli etkinlikleri yönetme
Tek bir tuşa basma işlemini gerçekleştirmek için uygun şekilde onKeyDown()
veya onKeyUp()
uygulayın. Genellikle, yalnızca bir etkinlik aldığınızdan emin olmak için onKeyUp()
seçeneğini kullanırsınız. Kullanıcı bir tuşu basılı 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 Control ile birleştirilmesi gibi değiştirici önemli etkinliklere yanıt vermek için geri çağırma yöntemine aktarılan KeyEvent
öğesini sorgulayabilirsiniz. Değiştirici tuşlarla ilgili bilgi sağlayan getModifiers()
ve getMetaState()
gibi çeşitli yöntemler vardır.
Bununla birlikte, en basit çözüm, sizin için önemli olan tam değiştirici tuşuna isShiftPressed()
ve isCtrlPressed()
gibi yöntemlerle basılıp basılmadığını kontrol etmektir.
Örneğin, Üst Karakter tuşu tuşlardan biriyle basılı tutulduğunda uygulanan ekstra işlemle birlikte onKeyUp()
uygulamasını tekrar görebilirsiniz:
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ısayolu Yardımcısı : Kullanıcıların uygulamanızın sunduğu klavye kısayollarını aramasını sağlayan bir sistem ekranıdır.