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