Klavye işlemlerini kullan

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