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