Klavye işlemlerini kullan

Kullanıcı odağı ayna gibi düzenlenebilir bir metin görünümüne verdiğinde EditText öğesi varsa ve kullanıcıya bir donanım klavyesi takılıysa giriş sistem tarafından işlenir. Ancak belirli bir sayıda klavye girişini doğrudan kendiniz hallediyorsanız, geri çağırma yöntemleri ile bunu KeyEvent.Callback liginden arayüz, örneğin onKeyDown() ve onKeyMultiple().

Hem Activity ve View sınıfta KeyEvent.Callback arayüzünü kullanın. genellikle bu sınıfların uzantısında bulunan geri çağırma yöntemlerini geçersiz kılar, uygun olmalıdır.

Not: Klavye etkinliklerini KeyEvent sınıfı ve ilgili API'ler, klavye etkinliklerinin yalnızca bir donanım klavyesinden gelmesini bekleyin. Hiçbir zaman anahtarı alma Yumuşak giriş yöntemindeki (dokunmatik klavye) herhangi bir tuşa ilişkin etkinlikler.

Tek önemli etkinlikleri yönetme

Tek bir tuşa basma işlemini gerçekleştirmek için onKeyDown() veya onKeyUp(), gerektiği şekilde ele alın. Genellikle onKeyUp() . Kullanıcı bir tuşa basılı tutarsa onKeyDown() birden fazla 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);
    }
}

Herkese açık kullanıcı adı değiştirici tuşlar

Değiştirici tuş etkinliklerine (ör. bir tuş üst karakter ile birleştirildiğinde) yanıt vermek için veya Control kullanıyorsanız, KeyEvent öğesini sorgula geri çağırma yöntemine aktarılan bir değer içerir. Çeşitli yöntemler değiştirici tuşlar hakkında bilgi sağlar. Örneğin: getModifiers() ve getMetaState(). Ancak en basit çözüm, sistemle ilgili tam olarak ilgilendiğiniz değiştirici tuşa basılması, isShiftPressed() ve isCtrlPressed().

Örneğin, onKeyUp() uygulaması örneğini burada görebilirsiniz aşağıdaki işlemler de aynı şekilde yapılır: Üst Karakter tuşu aşağıdaki tuşlardan biriyle basılı tutulduğunda:

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