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

जब उपयोगकर्ता बदलाव किए जा सकने वाले किसी टेक्स्ट व्यू पर फ़ोकस देता है, जैसे कि 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);
    }
}

अन्य संसाधन

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