जब उपयोगकर्ता बदलाव किए जा सकने वाले किसी टेक्स्ट व्यू पर फ़ोकस देता है, जैसे कि 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); } }
अन्य संसाधन
- कीबोर्ड शॉर्टकट सहायक : यह एक सिस्टम स्क्रीन है. इसकी मदद से, उपयोगकर्ता आपके ऐप्लिकेशन में उपलब्ध कीबोर्ड शॉर्टकट खोज सकते हैं.