कीबोर्ड से जुड़ी कार्रवाइयां मैनेज करना

जब उपयोगकर्ता, बदलाव किए जा सकने वाले टेक्स्ट व्यू पर फ़ोकस करता है, जैसे कि EditText एलिमेंट और उपयोगकर्ता के पास हार्डवेयर कीबोर्ड जुड़ा होता है, तो सभी इनपुट को सिस्टम मैनेज करता है. हालांकि, अगर आपको कीबोर्ड इनपुट को खुद इंटरसेप्ट करना है या उसे सीधे मैनेज करना है, तो KeyEvent.Callback इंटरफ़ेस से कॉलबैक के तरीकों को लागू करें. जैसे, onKeyDown() और onKeyMultiple().

Activity और View, दोनों क्लास KeyEvent.Callback इंटरफ़ेस को लागू करती हैं. इसलिए, आम तौर पर इन क्लास के एक्सटेंशन में, कॉलबैक के तरीकों को ज़रूरत के हिसाब से बदला जाता है.

ध्यान दें: KeyEvent क्लास और उससे जुड़े एपीआई की मदद से कीबोर्ड इवेंट मैनेज करते समय, यह उम्मीद करें कि कीबोर्ड इवेंट सिर्फ़ हार्डवेयर कीबोर्ड से आ रहे हैं. सॉफ़्ट इनपुट तरीके (ऑन-स्क्रीन कीबोर्ड) पर किसी भी बटन के लिए, बटन दबाए जाने की जानकारी देने वाले इवेंट मिलने पर कभी भी भरोसा न करें.

एक बटन से होने वाले इवेंट मैनेज करना

किसी एक बटन को दबाने पर होने वाली कार्रवाई को मैनेज करने के लिए, ज़रूरत के हिसाब से onKeyDown() या onKeyUp() लागू करें. आम तौर पर, onKeyUp() का इस्तेमाल तब किया जाता है, जब आपको यह पक्का करना हो कि आपको सिर्फ़ एक इवेंट मिले. अगर उपयोगकर्ता किसी बटन को दबाकर रखता है, तो onKeyDown() को कई बार कॉल किया जाता है.

उदाहरण के लिए, यह लागू करने पर, गेम को कंट्रोल करने के लिए कीबोर्ड के कुछ बटन काम करते हैं:

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);
    }
}

कार्रवाई बदलने वाली कुंजियों को हैंडल करना

कार्रवाई बदलने वाले बटन के इवेंट के जवाब देने के लिए, KeyEvent के बारे में क्वेरी की जा सकती है. यह KeyEvent, कॉलबैक तरीके में पास किया जाता है. जैसे, जब किसी बटन को Shift या Control के साथ दबाया जाता है. कई तरीकों से, कार्रवाई बदलने वाली कुंजियों के बारे में जानकारी मिलती है. जैसे, getModifiers() और getMetaState(). हालांकि, सबसे आसान तरीका यह देखना है कि isShiftPressed() और isCtrlPressed() जैसे तरीकों से, वह बदलाव करने वाला बटन दबाया जा रहा है जिसकी आपको ज़रूरत है.

उदाहरण के लिए, यहां onKeyUp() को लागू करने का तरीका फिर से बताया गया है. इसमें, किसी एक बटन के साथ Shift बटन को दबाकर रखने पर, अतिरिक्त हैंडल करने की सुविधा भी शामिल है:

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);
    }
}

अन्य संसाधन

  • कीबोर्ड शॉर्टकट सहायक: सिस्टम की स्क्रीन, जिसकी मदद से उपयोगकर्ता आपके ऐप्लिकेशन में उपलब्ध कीबोर्ड शॉर्टकट खोज सकते हैं.