बड़ी स्क्रीन वाले डिवाइसों पर, उपयोगकर्ता अक्सर कीबोर्ड, माउस, ट्रैकपैड, स्टाइलस या गेमपैड का इस्तेमाल करके ऐप्लिकेशन के साथ इंटरैक्ट करते हैं. अपने ऐप्लिकेशन को बाहरी डिवाइसों से इनपुट पाने की अनुमति देने के लिए, यह तरीका अपनाएं:
- कीबोर्ड के बुनियादी इस्तेमाल की जांच करें. जैसे, पहले जैसा करने के लिए Ctrl+Z, कॉपी करने के लिए Ctrl+C, और सेव करने के लिए Ctrl+S. डिफ़ॉल्ट कीबोर्ड शॉर्टकट की सूची देखने के लिए, कीबोर्ड की कार्रवाइयों को मैनेज करना लेख पढ़ें.
- कीबोर्ड के बेहतर वर्शन की जांच करें. उदाहरण के लिए, Tab बटन और ऐरो बटन की मदद से कीबोर्ड पर नेविगेट करना, Enter बटन से टेक्स्ट डालने की पुष्टि करना, और मीडिया ऐप्लिकेशन में Spacebar का इस्तेमाल करके चलाना और रोकना.
- माउस के बुनियादी इंटरैक्शन की जांच करें. इसमें, कॉन्टेक्स्ट मेन्यू के लिए राइट क्लिक, कर्सर घुमाने पर आइकॉन में होने वाले बदलाव, और कस्टम कॉम्पोनेंट पर माउस व्हील या ट्रैकपैड स्क्रोल इवेंट शामिल हैं.
- ऐप्लिकेशन के हिसाब से इनपुट डिवाइसों की जांच करें. जैसे, स्टाइलस, गेम कंट्रोलर, और संगीत ऐप्लिकेशन के एमआईडीआई कंट्रोलर.
- ऐसे इनपुट सिस्टम का इस्तेमाल करें जो बेहतर अनुभव दे सकें. इससे, डेस्कटॉप पर ऐप्लिकेशन का इस्तेमाल करना आसान हो जाता है. उदाहरण के लिए, डीजे ऐप्लिकेशन के लिए क्रॉस-फ़ेडर के तौर पर टचपैड, गेम के लिए माउस कैप्चर, और कीबोर्ड का इस्तेमाल करने वाले उपयोगकर्ताओं के लिए कीबोर्ड शॉर्टकट.
कीबोर्ड
आपका ऐप्लिकेशन कीबोर्ड इनपुट का जवाब जिस तरह देता है उससे बड़ी स्क्रीन पर उपयोगकर्ता अनुभव को बेहतर बनाने में मदद मिलती है. कीबोर्ड इनपुट तीन तरह के होते हैं: नेविगेशन, कीस्ट्रोक, और शॉर्टकट.
नेविगेशन
टच पर आधारित ऐप्लिकेशन में, कीबोर्ड नेविगेशन की सुविधा का इस्तेमाल बहुत कम किया जाता है. हालांकि, जब उपयोगकर्ता किसी ऐप्लिकेशन का इस्तेमाल कर रहे हों और उनके हाथ कीबोर्ड पर हों, तो वे इस सुविधा की उम्मीद करते हैं. फ़ोन, टैबलेट, फ़ोल्ड किए जा सकने वाले डिवाइसों, और डेस्कटॉप डिवाइसों पर, कीबोर्ड नेविगेशन की सुविधा ज़रूरी हो सकती है. ऐसा उन उपयोगकर्ताओं के लिए ज़रूरी है जो सुलभता से जुड़ी सुविधाओं का इस्तेमाल करते हैं.
कई ऐप्लिकेशन के लिए, ऐरो बटन और Tab नेविगेशन को Android फ़्रेमवर्क अपने-आप मैनेज करता है. उदाहरण के लिए, Button
डिफ़ॉल्ट रूप से फ़ोकस किया जा सकता है. साथ ही, कीबोर्ड नेविगेशन आम तौर पर किसी अतिरिक्त कोड के बिना काम करना चाहिए. डिफ़ॉल्ट रूप से फ़ोकस न किए जा सकने वाले व्यू के लिए कीबोर्ड नेविगेशन की सुविधा चालू करने के लिए, उन्हें फ़ोकस किए जा सकने वाले व्यू के तौर पर मार्क करें. ऐसा प्रोग्राम के हिसाब से या एक्सएमएल में किया जा सकता है:
Kotlin
yourView.isFocusable = true
Java
yourView.setFocusable(true);
इसके अलावा, अपनी लेआउट फ़ाइल में focusable
एट्रिब्यूट को सेट किया जा सकता है:
android:focusable="true"
ज़्यादा जानने के लिए, फ़ोकस मैनेज करना लेख पढ़ें.
फ़ोकस की सुविधा चालू होने पर, Android फ़्रेमवर्क, फ़ोकस किए जा सकने वाले सभी व्यू के लिए नेविगेशनल मैपिंग बनाता है. यह मैपिंग, व्यू की पोज़िशन के आधार पर बनाई जाती है. आम तौर पर, यह उम्मीद के मुताबिक काम करता है और इसे और बेहतर बनाने की ज़रूरत नहीं होती. अगर किसी ऐप्लिकेशन की ज़रूरतों के हिसाब से डिफ़ॉल्ट मैपिंग सही नहीं है, तो मैपिंग को इस तरह बदला जा सकता है:
Kotlin
// Arrow keys yourView.nextFocusLeftId = R.id.view_to_left yourView.nextFocusRightId = R.id.view_to_right yourView.nextFocusTopId = R.id.view_above yourView.nextFocusBottomId = R.id.view_below // Tab key yourView.nextFocusForwardId = R.id.next_view
Java
// Arrow keys yourView.setNextFocusLeftId(R.id.view_to_left); yourView.setNextFocusRightId(R.id.view_to_left); yourView.setNextFocusTopId(R.id.view_to_left); yourView.setNextFocusBottomId(R.id.view_to_left); // Tab key yourView.setNextFocusForwardId(R.id.next_view);
सिर्फ़ कीबोर्ड का इस्तेमाल करके, अपने ऐप्लिकेशन के हर यूज़र इंटरफ़ेस (यूआई) एलिमेंट को ऐक्सेस करने की जांच करें. अक्सर इस्तेमाल होने वाले एलिमेंट को माउस या टच इनपुट के बिना ऐक्सेस किया जा सकता हो.
याद रखें कि सुलभता से जुड़ी ज़रूरतों वाले उपयोगकर्ताओं के लिए, कीबोर्ड की सुविधा ज़रूरी हो सकती है.
कीस्ट्रोक
टेक्स्ट इनपुट के लिए, ऐप्लिकेशन को बड़ी स्क्रीन वाले डिवाइसों पर ठीक से काम करना चाहिए. जैसे,के लिए EditText
, औरके लिए. इसके लिए, ऐप्लिकेशन को डेवलप करने के लिए कोई अतिरिक्त काम नहीं करना पड़ेगा. फ़्रेमवर्क के अनुमान न लगा सकने वाले कीस्ट्रोक के लिए, ऐप्लिकेशन को खुद ही व्यवहार मैनेज करना होगा. यह खास तौर पर, कस्टम व्यू वाले ऐप्लिकेशन के लिए सही है.
कुछ उदाहरणों में, चैट ऐप्लिकेशन शामिल हैं, जो मैसेज भेजने के लिए Enter बटन का इस्तेमाल करते हैं. इसके अलावा, मीडिया ऐप्लिकेशन Spacebar का इस्तेमाल करके, वीडियो चलाना और बंद करना शुरू करते हैं. साथ ही, गेम w, a, s, और d बटन का इस्तेमाल करके, गेम में आगे-पीछे की गति को कंट्रोल करते हैं.
ज़्यादातर ऐप्लिकेशन, onKeyUp()
कॉलबैक को बदल देते हैं और मिले हर कीकोड के लिए, उम्मीद के मुताबिक व्यवहार जोड़ते हैं:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_ENTER -> { sendChatMessage() true } KeyEvent.KEYCODE_SPACE -> { playOrPauseMedia() true } else -> super.onKeyUp(keyCode, event) } }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { sendMessage(); return true; } else if (KeyEvent.KEYCODE_SPACE){ playOrPauseMedia(); return true; } else { return super.onKeyUp(keyCode, event); } }
बटन को छोड़ने पर, onKeyUp
इवेंट ट्रिगर होता है. कॉलबैक का इस्तेमाल करने से, ऐप्लिकेशन को एक बटन को दबाकर रखने या धीरे से छोड़ने पर, कई onKeyDown
इवेंट प्रोसेस करने की ज़रूरत नहीं पड़ती. जिन गेम और ऐप्लिकेशन को यह पता लगाना होता है कि कोई बटन दबाया गया है या उपयोगकर्ता ने बटन को दबाकर रखा है वे onKeyDown
इवेंट को सुन सकते हैं और बार-बार होने वाले onKeyDown
इवेंट को खुद मैनेज कर सकते हैं.
ज़्यादा जानकारी के लिए, कीबोर्ड से की जाने वाली कार्रवाइयों को मैनेज करना लेख पढ़ें.
शॉर्टकट
हार्डवेयर कीबोर्ड का इस्तेमाल करते समय, सामान्य कीबोर्ड शॉर्टकट काम करते हैं. इनमें Ctrl, Alt, Shift, और Meta बटन शामिल हैं. अगर कोई ऐप्लिकेशन शॉर्टकट लागू नहीं करता है, तो उपयोगकर्ताओं को इसका अनुभव पसंद नहीं आएगा. ऐडवांस उपयोगकर्ता, ऐप्लिकेशन के अक्सर इस्तेमाल किए जाने वाले टास्क के लिए शॉर्टकट की भी सराहना करते हैं. शॉर्टकट की मदद से, किसी ऐप्लिकेशन को आसानी से इस्तेमाल किया जा सकता है. साथ ही, यह उन ऐप्लिकेशन से अलग दिखता है जिनमें शॉर्टकट नहीं होते.
कुछ सामान्य शॉर्टकट में Ctrl+S (सेव करें), Ctrl+Z (पहले जैसा करें), और Ctrl+Shift+Z (फिर से करें) शामिल हैं. डिफ़ॉल्ट शॉर्टकट की सूची के लिए, कीबोर्ड से की जाने वाली कार्रवाइयां मैनेज करना लेख पढ़ें.
किसी दिए गए कीकोड के लिए, सभी बटन के कॉम्बिनेशन (Alt,
Ctrl, Shift, और Meta) को इंटरसेप्ट करने के लिए, dispatchKeyShortcutEvent()
को लागू करके शॉर्टकट चालू किए जा सकते हैं.
किसी खास मॉडिफ़ायर बटन की जांच करने के लिए, इनका इस्तेमाल करें:
KeyEvent.isCtrlPressed()
,KeyEvent.isShiftPressed()
,KeyEvent.isAltPressed()
,KeyEvent.isMetaPressed()
या
Kotlin
override fun dispatchKeyShortcutEvent(event: KeyEvent): Boolean { return when (event.keyCode) { KeyEvent.KEYCODE_O -> { openFile() // Ctrl+O, Shift+O, Alt+O true } KeyEvent.KEYCODE_Z-> { if (event.isCtrlPressed) { if (event.isShiftPressed) { redoLastAction() // Ctrl+Shift+Z pressed true } else { undoLastAction() // Ctrl+Z pressed true } } } else -> { return super.dispatchKeyShortcutEvent(event) } } }
Java
@Override public boolean dispatchKeyShortcutEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_O) { openFile(); // Ctrl+O, Shift+O, Alt+O return true; } else if(event.getKeyCode() == KeyEvent.KEYCODE_Z) { if (event.isCtrlPressed()) { if (event.isShiftPressed()) { redoLastAction(); return true; } else { undoLastAction(); return true; } } } return super.dispatchKeyShortcutEvent(event); }
शॉर्टकट कोड को अन्य कीस्ट्रोक मैनेजमेंट (जैसे, onKeyUp()
और
onKeyDown()
) से अलग करने पर, कार्रवाई बदलने वाली कुंजियां डिफ़ॉल्ट रूप से काम करती हैं. इसके लिए, हर मामले में कार्रवाई बदलने वाली कुंजियों की जांच मैन्युअल तौर पर करने की ज़रूरत नहीं होती. अलग-अलग कीबोर्ड लेआउट और ऑपरेटिंग सिस्टम का इस्तेमाल करने वाले लोगों के लिए, सभी मॉडिफ़ायर बटन के कॉम्बिनेशन इस्तेमाल करने की अनुमति देना ज़्यादा सुविधाजनक हो सकता है.
हालांकि, onKeyUp()
में शॉर्टकट लागू करने के लिए, KeyEvent.isCtrlPressed()
, KeyEvent.isShiftPressed()
या KeyEvent.isAltPressed()
की जांच करें. अगर बदली गई कुंजी के व्यवहार में, शॉर्टकट के बजाय ऐप्लिकेशन के व्यवहार में ज़्यादा बदलाव होता है, तो इसे बनाए रखना आसान हो सकता है. उदाहरण के लिए, गेम में W का मतलब "आगे बढ़ना" और Shift+W का मतलब "आगे दौड़ना" हो.
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when(keyCode) { KeyEvent.KEYCODE_W-> { if (event.isShiftPressed) { if (event.isCtrlPressed) { flyForward() // Ctrl+Shift+W pressed true } else { runForward() // Shift+W pressed true } } else { walkForward() // W pressed true } } else -> super.onKeyUp(keyCode, event) } }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_W) { if (event.isShiftPressed()) { if (event.isCtrlPressed()) { flyForward(); // Ctrl+Shift+W pressed return true; } else { runForward(); // Shift+W pressed return true; } } else { walkForward(); return true; } } return super.onKeyUp(keyCode, event); }
कीबोर्ड शॉर्टकट सहायक भी देखें.
स्टाइलस
बड़ी स्क्रीन वाले कई डिवाइसों में स्टाइलस होता है. Android ऐप्लिकेशन, स्टाइलस को टचस्क्रीन इनपुट के तौर पर मैनेज करते हैं. कुछ डिवाइसों में यूएसबी या ब्लूटूथ ड्रॉइंग टेबल भी हो सकती है. जैसे, Wacom Intuos. Android ऐप्लिकेशन को ब्लूटूथ इनपुट मिल सकता है, लेकिन यूएसबी इनपुट नहीं.
स्टाइलस इवेंट को View#onTouchEvent()
या View#onGenericMotionEvent()
के ज़रिए टचस्क्रीन इवेंट के तौर पर रिपोर्ट किया जाता है. साथ ही, इसमें SOURCE_STYLUS
टाइप का MotionEvent#getSource()
शामिल होता है.
MotionEvent
ऑब्जेक्ट में इवेंट के बारे में जानकारी होती है:
MotionEvent#getToolType()
, डिसप्ले से संपर्क करने वाले टूल के आधार परTOOL_TYPE_FINGER
,TOOL_TYPE_STYLUS
याTOOL_TYPE_ERASER
दिखाता हैMotionEvent#getPressure()
, स्टाइलस पेन पर डाले गए दबाव की जानकारी देता है (अगर यह सुविधा काम करती है)MotionEvent#getAxisValue()
के साथMotionEvent.AXIS_TILT
औरMotionEvent.AXIS_ORIENTATION
, स्टाइलस के फ़िज़िकल झुकाव और ओरिएंटेशन की जानकारी देते हैं (अगर यह सुविधा काम करती है)
पुराने पॉइंट
Android, इनपुट इवेंट को एक साथ भेजता है और हर फ़्रेम में उन्हें एक बार डिलीवर करता है. स्टाइलस, डिसप्ले के मुकाबले ज़्यादा फ़्रीक्वेंसी पर इवेंट की जानकारी दे सकता है. ड्रॉइंग ऐप्लिकेशन बनाते समय, getHistorical
एपीआई का इस्तेमाल करके, हाल ही में हुए इवेंट देखें:
MotionEvent#getHistoricalX()
MotionEvent#getHistoricalY()
MotionEvent#getHistoricalPressure()
MotionEvent#getHistoricalAxisValue()
हथेली के निशान की पहचान न हो पाना
जब उपयोगकर्ता स्टाइलस का इस्तेमाल करके, आपके ऐप्लिकेशन पर ड्रॉ करते हैं, लिखते हैं या उससे इंटरैक्ट करते हैं, तो कभी-कभी वे अपनी हथेली से स्क्रीन को छूते हैं. टच इवेंट (ACTION_DOWN
या ACTION_POINTER_DOWN
पर सेट करें) की सूचना, सिस्टम के अनचाहे तरीके से हथेली के छूने की पहचान करने और उसे अनदेखा करने से पहले, आपके ऐप्लिकेशन को दी जा सकती है.
Android, MotionEvent
भेजकर, हथेली से छूने से जुड़े इवेंट रद्द करता है. अगर आपके ऐप्लिकेशन को ACTION_CANCEL
मिलता है, तो जेस्चर को रद्द करें. अगर आपके ऐप्लिकेशन को ACTION_POINTER_UP
मिलता है, तो देखें कि FLAG_CANCELED
सेट है या नहीं. अगर ऐसा है, तो जेस्चर को रद्द करें.
सिर्फ़ FLAG_CANCELED
के लिए जांच न करें. Android 13 (एपीआई लेवल 33) और उसके बाद के वर्शन पर, सिस्टम ACTION_CANCEL
इवेंट के लिए FLAG_CANCELED
सेट करता है. हालांकि, सिस्टम Android के पुराने वर्शन पर फ़्लैग सेट नहीं करता.
Android 12
Android 12 (एपीआई लेवल 32) और उससे पहले के वर्शन पर, सिर्फ़ एक पॉइंटर वाले टच इवेंट के लिए, पाम रिजेक्शन का पता लगाया जा सकता है. अगर सिर्फ़ हथेली का स्पर्श पॉइंटर है, तो सिस्टम, मोशन इवेंट ऑब्जेक्ट पर ACTION_CANCEL
सेट करके इवेंट रद्द कर देता है. अगर अन्य पॉइंटर बंद हैं, तो सिस्टम ACTION_POINTER_UP
सेट करता है. हालांकि, यह वैल्यू, पाम रिजेक्शन का पता लगाने के लिए ज़रूरी नहीं है.
Android 13
Android 13 (एपीआई लेवल 33) और उसके बाद के वर्शन पर, अगर सिर्फ़ हथेली का स्पर्श पॉइंटर है, तो सिस्टम, मोशन इवेंट ऑब्जेक्ट पर ACTION_CANCEL
और FLAG_CANCELED
सेट करके इवेंट रद्द कर देता है. अगर अन्य पॉइंटर बंद हैं, तो सिस्टम ACTION_POINTER_UP
और FLAG_CANCELED
सेट करता है.
जब भी आपके ऐप्लिकेशन को ACTION_POINTER_UP
वाला कोई मोशन इवेंट मिलता है, तो FLAG_CANCELED
देखें. इससे यह पता चलता है कि इवेंट में, हथेली के इशारे को अस्वीकार करने (या किसी दूसरे इवेंट को रद्द करने) की जानकारी है या नहीं.
नोट लेने के लिए ऐप्लिकेशन
ChromeOS में एक खास इंटेंट है, जो उपयोगकर्ताओं को नोट लेने के लिए रजिस्टर किए गए ऐप्लिकेशन दिखाता है. किसी ऐप्लिकेशन को नोट लेने वाले ऐप्लिकेशन के तौर पर रजिस्टर करने के लिए, अपने ऐप्लिकेशन के मेनिफ़ेस्ट में ये चीज़ें जोड़ें:
<intent-filter>
<action android:name="org.chromium.arc.intent.action.CREATE_NOTE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
जब कोई ऐप्लिकेशन सिस्टम में रजिस्टर हो जाता है, तो उपयोगकर्ता उसे डिफ़ॉल्ट तौर पर नोट लेने वाले ऐप्लिकेशन के तौर पर चुन सकता है. जब किसी नए नोट का अनुरोध किया जाता है, तो ऐप्लिकेशन को स्टाइलस इनपुट के लिए एक खाली नोट बनाना चाहिए. जब उपयोगकर्ता किसी इमेज (जैसे, स्क्रीनशॉट या डाउनलोड की गई इमेज) पर एनोटेट करना चाहता है, तो ऐप्लिकेशन ClipData
के साथ लॉन्च होता है. इसमें content://
यूआरआई वाले एक या उससे ज़्यादा आइटम होते हैं. ऐप्लिकेशन को एक नोट बनाना चाहिए, जिसमें अटैच की गई पहली इमेज को बैकग्राउंड इमेज के तौर पर इस्तेमाल किया जाए. साथ ही, ऐसा मोड चालू करना चाहिए जिसमें उपयोगकर्ता, स्क्रीन पर स्टाइलस से ड्रॉ कर सके.
स्टाइलस के बिना नोट लेने के इंटेंट की जांच करना
[TBD remove section.]
यह जांचने के लिए कि कोई ऐप्लिकेशन, स्टाइलस के बिना नोट लेने के इंटेंट पर सही तरीके से जवाब देता है या नहीं, ChromeOS पर नोट लेने के विकल्प दिखाने के लिए यह तरीका अपनाएं:
- डेवलपर मोड पर स्विच करना और डिवाइस पर डेटा सेव करने की अनुमति देना
- टर्मिनल खोलने के लिए, Ctrl+Alt+F2 दबाएं
sudo vi /etc/chrome_dev.conf
कमांड चलाएं- फ़ाइल के आखिर में नई लाइन में बदलाव करने और
--ash-enable-palette
जोड़ने के लिए,i
दबाएं - Esc दबाकर सेव करें. इसके बाद, :, w, q टाइप करें और Enter दबाएं
- ChromeOS के सामान्य यूज़र इंटरफ़ेस (यूआई) पर वापस जाने के लिए, Ctrl+Alt+F1 दबाएं
- लॉग आउट करके, फिर से लॉग इन करें
अब शेल्फ़ पर स्टाइलस मेन्यू दिखेगा:
- शेल्फ़ पर मौजूद स्टाइलस बटन पर टैप करें और नया नोट चुनें. ऐसा करने पर, एक खाली ड्रॉइंग नोट खुलेगा.
- स्क्रीनशॉट लें. शेल्फ़ में जाकर, स्टाइलस बटन > स्क्रीन कैप्चर करें चुनें या कोई इमेज डाउनलोड करें. सूचना में, इमेज पर एनोटेट करने का विकल्प होना चाहिए. ऐसा करने पर, ऐप्लिकेशन खुल जाएगा और उसमें वह इमेज दिखेगी जिस पर एनोटेट किया जा सकता है.
माउस और टचपैड के साथ काम करना
ज़्यादातर ऐप्लिकेशन को आम तौर पर, बड़ी स्क्रीन पर होने वाले सिर्फ़ तीन इवेंट को हैंडल करने की ज़रूरत होती है: राइट क्लिक, हॉवर, और खींचकर छोड़ना.
राइट क्लिक करना
सूची के किसी आइटम को दबाकर रखने जैसी किसी भी कार्रवाई से, ऐप्लिकेशन में संदर्भ मेन्यू दिखता है. इसलिए, दायां क्लिक करने पर भी ऐसा होना चाहिए.
राइट क्लिक इवेंट को मैनेज करने के लिए, ऐप्लिकेशन को View.OnContextClickListener
रजिस्टर करना चाहिए:
Kotlin
yourView.setOnContextClickListener { showContextMenu() true }
Java
yourView.setOnContextClickListener(v -> { showContextMenu(); return true; });
कॉन्टेक्स्ट मेन्यू बनाने के बारे में जानने के लिए, कॉन्टेक्स्ट मेन्यू बनाना लेख पढ़ें.
कर्सर घुमाएं
कर्सर घुमाने पर होने वाले इवेंट को मैनेज करके, अपने ऐप्लिकेशन के लेआउट को बेहतर और इस्तेमाल में आसान बनाया जा सकता है. यह खास तौर पर, पसंद के मुताबिक बनाए गए व्यू:
Kotlin
// Change the icon to a "hand" pointer on hover. // Highlight the view by changing the background. yourView.setOnHoverListener { view, _ -> addVisualHighlighting(true) view.pointerIcon = PointerIcon.getSystemIcon(view.context, PointerIcon.TYPE_HAND) true // Listener consumes the event. }
Java
// Change the icon to a "hand" pointer on hover. // Highlight the view by changing the background. yourView.setOnHoverListener((view, event) -> { addVisualHighlighting(true); view.setPointerIcon( PointerIcon.getSystemIcon(view.getContext(), PointerIcon.TYPE_HAND) ); return true; // Listener consumes the event. });
इसके दो सबसे सामान्य उदाहरण ये हैं:
- माउस पॉइंटर के आइकॉन को बदलकर, उपयोगकर्ताओं को यह बताना कि किसी एलिमेंट पर क्लिक किया जा सकता है या उसमें बदलाव किया जा सकता है या नहीं
- जब कर्सर किसी बड़ी सूची या ग्रिड में मौजूद आइटम पर घुमाया जाता है, तो उन आइटम के लिए विज़ुअल फ़ीडबैक जोड़ना
खींचें और छोड़ें
कई विंडो वाले एनवायरमेंट में, उपयोगकर्ताओं को ऐप्लिकेशन के बीच आइटम खींचकर छोड़ने की सुविधा मिलनी चाहिए. यह बात डेस्कटॉप डिवाइसों के साथ-साथ, स्प्लिट-स्क्रीन मोड में टैबलेट, फ़ोन, और फ़ोल्ड किए जा सकने वाले डिवाइसों पर भी लागू होती है.
यह देखें कि क्या उपयोगकर्ता आपके ऐप्लिकेशन में आइटम खींचकर छोड़ सकते हैं. उदाहरण के लिए, फ़ोटो एडिटर को फ़ोटो, ऑडियो प्लेयर को ऑडियो फ़ाइलें, और ड्रॉइंग प्रोग्राम को फ़ोटो मिल सकती हैं.
खींचें और छोड़ें सुविधा जोड़ने के लिए, खींचें और छोड़ें सुविधा चालू करें लेख पढ़ें. साथ ही, ChromeOS पर Android — खींचें और छोड़ें सुविधा लागू करना ब्लॉग पोस्ट भी पढ़ें.
ChromeOS के लिए खास बातें
- ऐप्लिकेशन के बाहर से खींचे और छोड़े गए आइटम ऐक्सेस करने के लिए,
requestDragAndDropPermissions()
से अनुमति का अनुरोध करना न भूलें किसी आइटम को खींचकर दूसरे ऐप्लिकेशन में छोड़ने के लिए, उस पर
View.DRAG_FLAG_GLOBAL
फ़्लैग होना चाहिए
ऐडवांस पॉइंटर सपोर्ट
माउस और टचपैड इनपुट को बेहतर तरीके से मैनेज करने वाले ऐप्लिकेशन को PointerEvent
पाने के लिए,
View#onGenericMotionEvent()
और SOURCE_MOUSE
और SOURCE_TOUCHSCREEN
के बीच अंतर करने के लिए, [MotionEvent.getSource()
][] का इस्तेमाल करें.
ज़रूरी व्यवहार लागू करने के लिए, MotionEvent
ऑब्जेक्ट की जांच करें:
- किसी भी तरह की गतिविधि से
ACTION_HOVER_MOVE
इवेंट जनरेट होते हैं. - बटन,
ACTION_BUTTON_PRESS
औरACTION_BUTTON_RELEASE
इवेंट जनरेट करते हैं.getButtonState()
का इस्तेमाल करके, माउस और ट्रैकपैड के सभी बटन की मौजूदा स्थिति भी देखी जा सकती है. - माउस व्हील को स्क्रोल करने पर,
ACTION_SCROLL
इवेंट जनरेट होते हैं.
गेम कंट्रोलर
बड़ी स्क्रीन वाले कुछ Android डिवाइसों पर, चार गेम कंट्रोलर इस्तेमाल किए जा सकते हैं. गेम कंट्रोलर को मैनेज करने के लिए, स्टैंडर्ड Android गेम कंट्रोलर एपीआई का इस्तेमाल करें. गेम कंट्रोलर के लिए सहायता देखें.
गेम कंट्रोलर के बटन, सामान्य मैपिंग के हिसाब से सामान्य वैल्यू पर मैप किए जाते हैं. हालांकि, गेम कंट्रोलर बनाने वाली सभी कंपनियां, मैपिंग के एक ही तरीके का इस्तेमाल नहीं करती हैं. उपयोगकर्ताओं को अलग-अलग लोकप्रिय कंट्रोलर मैपिंग चुनने की अनुमति देने पर, उन्हें बेहतर अनुभव दिया जा सकता है. ज़्यादा जानकारी के लिए, गेमपैड के बटन दबाने की प्रोसेस देखें.
इनपुट का अनुवाद मोड
ChromeOS में, डिफ़ॉल्ट रूप से इनपुट का अनुवाद करने वाला मोड चालू होता है. ज़्यादातर Android ऐप्लिकेशन के लिए, यह मोड ऐप्लिकेशन को डेस्कटॉप पर उम्मीद के मुताबिक काम करने में मदद करता है. उदाहरण के लिए, टचपैड पर दो उंगलियों से स्क्रोल करने की सुविधा अपने-आप चालू होना, माउस व्हील से स्क्रोल करना, और रॉ डिसप्ले कोऑर्डिनेट को विंडो कोऑर्डिनेट पर मैप करना. आम तौर पर, ऐप्लिकेशन डेवलपर को इनमें से किसी भी व्यवहार को खुद लागू करने की ज़रूरत नहीं होती.
अगर कोई ऐप्लिकेशन, कस्टम इनपुट व्यवहार लागू करता है, जैसे कि दो उंगलियों से टचपैड को पिंच करने की कस्टम कार्रवाई तय करना या इनपुट ट्रांसलेशन, ऐप्लिकेशन के लिए ज़रूरी इनपुट इवेंट उपलब्ध नहीं कराते हैं, तो Android मेनिफ़ेस्ट में यह टैग जोड़कर, इनपुट ट्रांसलेशन मोड को बंद किया जा सकता है:
<uses-feature
android:name="android.hardware.type.pc"
android:required="false" />