Wear पर कलाई के जेस्चर का इस्तेमाल करें

कलाई के जेस्चर से, अपने ऐप्लिकेशन के साथ एक हाथ से किए जाने वाले इंटरैक्शन को तुरंत चालू किया जा सकता है टच स्क्रीन को पहचानने में दिक्कत होती है.

उदाहरण के लिए, कोई व्यक्ति एक हाथ से सूचनाओं के ज़रिए सूचना दिखाता है और पानी का कप पकड़े हुए अन्य. कलाई के जेस्चर के अन्य इस्तेमाल के उदाहरणों में ये शामिल हैं:

  • जॉगिंग ऐप्लिकेशन में, वर्टिकल स्क्रीन पर नेविगेट करना चले गए कदम, बीता समय, और मौजूदा रफ़्तार
  • यात्रा वाले ऐप्लिकेशन में, फ़्लाइट और गेट की जानकारी स्क्रोल करके देखना
  • समाचार ऐप्लिकेशन में, लेख स्क्रोल करना

स्मार्टवॉच पर हाथ के जेस्चर देखने के लिए करें, तो पुष्टि करें कि जेस्चर को चालू करने के लिए, सेटिंग > बेहतर सुविधाएं > हाथ के जेस्चर > कलाई के जेस्चर चालू करें. इसके बाद, ट्यूटोरियल लॉन्च करें चुनकर, स्मार्टवॉच पर हाथ के जेस्चर (हाव-भाव) वाला ट्यूटोरियल देखें.

ध्यान दें: कलाई को हिलाने का मतलब है, पूरे सिस्टम पर पीछे जाने या पहले जैसा करने का जेस्चर और इसे ऐप्लिकेशन, पसंद के मुताबिक नहीं बना सकते.

इस गाइड में बताए गए तरीके के मुताबिक, कलाई के जेस्चर इन तरीकों से इस्तेमाल किए जा सकते हैं:

  • इसका घुमावदार लेआउट होता है, जो इसमें हाथ के जेस्चर से जुड़ी कार्रवाइयां पहले से तय हैं
  • मुख्य इवेंट का इस्तेमाल करके, नई उपयोगकर्ता गतिविधियां परिभाषित करें

कलाई के हर जेस्चर कोint KeyEvent क्लास के बारे में ज़्यादा जानें, जैसा कि नीचे दी गई टेबल में दिखाया गया है:

हाथ के जेस्चर मुख्य इवेंट ब्यौरा
कलाई बाहर की ओर झटकें KEYCODE_NAVIGATE_NEXT यह कुंजी कोड अगले आइटम पर जाता है.
कलाई को इस दिशा में झटके दें KEYCODE_NAVIGATE_PREVIOUS यह कुंजी कोड पिछले आइटम पर जाता है.

कलाई के जेस्चर को सपोर्ट करने के लिए, घुमावदार लेआउट का इस्तेमाल करना

WearableRecyclerView क्लास एक कर्व्ड लिस्ट के लिए लेआउट और अपने-आप काम करने की सुविधा देता है कलाई के जेस्चर. क्लास में व्यू पर फ़ोकस होने पर, कलाई के जेस्चर. इसका इस्तेमाल करने के बारे में जानकारी के लिए WearableRecyclerView क्लास, Wear OS पर सूचियां बनाना देखें. साथ ही, यह देखें इस गाइड का सबसे सही तरीके सेक्शन देखें.

ध्यान दें: WearableRecyclerView क्लास मिलती-जुलती वैल्यू को बदल देती है, क्लास का इस्तेमाल नहीं किया जा सकेगा.

भले ही आप WearableRecyclerView का इस्तेमाल करते हों, लेकिन फिर भी आप KeyEvent में से कॉन्सटेंट क्लास. पहले से तय की गई कार्रवाइयों को WearableRecyclerView और onKeyDown() कॉलबैक. इस व्यवहार को पूरी तरह से बंद किया जा सकता है setEnableGestureNavigation(false) का इस्तेमाल करें. ज़्यादा जानकारी के लिए, यह देखें कीबोर्ड की कार्रवाइयां मैनेज करना.

मुख्य इवेंट का सीधे तौर पर इस्तेमाल करना

हाथ के जेस्चर (हाव-भाव) के रिस्पॉन्स में नई कार्रवाइयों को ट्रिगर करने के लिए, WearableRecyclerView के बाहर मुख्य इवेंट का इस्तेमाल किया जा सकता है इवेंट. अहम बात यह है कि हाथ के इन जेस्चर (हाव-भाव) वाले इवेंट की पहचान तब होती है, जब डिवाइस चालू मोड में रखा जाता है और उन्हें सभी मुख्य इवेंट की तरह ही डिलीवर किया जाता है.

उपयोगकर्ता के इंटरैक्शन से जुड़ी क्लास. जैसे, View या Activity और जो लागू करता है KeyEvent.Callback इससे जुड़े मुख्य इवेंट सुन सकता है कलाई के जेस्चर की तरह ही, किसी अन्य मुख्य इवेंट के लिए इसका इस्तेमाल किया जा सकता है. Android फ़्रेमवर्क View या Activity पर कॉल करता है जिसमें फ़ोकस करने में मदद मिलती है. हाथ के जेस्चर के लिए, onKeyDown() जेस्चर के इस्तेमाल होने पर, तरीके कॉलबैक को कॉल किया जाता है.

उदाहरण के लिए, कोई ऐप्लिकेशन, View में पहले से तय कार्रवाइयों को बदल सकता है या Activity जो KeyEvent.Callback को इस तरह लागू करता है:

Kotlin

class GesturesActivity : Activity() {

    /* KeyEvent.Callback */
    override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
        return when (keyCode) {
            KeyEvent.KEYCODE_NAVIGATE_NEXT ->
                // Do something that advances a user View to the next item in an ordered list.
                moveToNextItem()
            KeyEvent.KEYCODE_NAVIGATE_PREVIOUS ->
                // Do something that advances a user View to the previous item in an ordered list.
                moveToPreviousItem()
            else -> {
                // If you did not handle it, let it be handled by the next possible element as determined
                // by the Activity.
                super.onKeyDown(keyCode, event)
            }
        }
    }

    /** Shows the next item in the custom list.  */
    private fun moveToNextItem(): Boolean {
        ...
        // Return true if handled successfully, otherwise return false.
        return false
    }

    /** Shows the previous item in the custom list.  */
    private fun moveToPreviousItem(): Boolean {
        ...
        // Return true if handled successfully, otherwise return false.
        return false
    }
}

Java

public final class GesturesActivity extends Activity {

 @Override /* KeyEvent.Callback */
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  switch (keyCode) {
   case KeyEvent.KEYCODE_NAVIGATE_NEXT:
    // Do something that advances a user View to the next item in an ordered list.
    return moveToNextItem();
   case KeyEvent.KEYCODE_NAVIGATE_PREVIOUS:
    // Do something that advances a user View to the previous item in an ordered list.
    return moveToPreviousItem();
  }
  // If you did not handle it, let it be handled by the next possible element as determined by the Activity.
  return super.onKeyDown(keyCode, event);
 }

 /** Shows the next item in the custom list. */
 private boolean moveToNextItem() {
  boolean handled = false;
  ...
  // Return true if handled successfully, otherwise return false.
  return handled;
 }

 /** Shows the previous item in the custom list. */
 private boolean moveToPreviousItem() {
  boolean handled = false;
  ...
  // Return true if handled successfully, otherwise return false.
  return handled;
 }
}

सबसे सही तरीके

  • KeyEvent की समीक्षा करें और मुख्य इवेंट की डिलीवरी के लिए KeyEvent.Callback पेज आपके View और Activity.
  • दिशा-निर्देश एक जैसे रखें: "फ़्लिक रिस्ट आउट" का इस्तेमाल करें इसके लिए अगला और "कलाई इन करो" पिछले के लिए.
  • हाथ के जेस्चर के लिए टच पैरलल होना ज़रूरी है.
  • विज़ुअल सुझाव दें.
  • उस फ़ंक्शन को लागू करने के लिए किसी कीकोड का इस्तेमाल न करें जिसे अन्य लोगों के लिए असरदार है. उदाहरण के लिए, किसी कार्रवाई को रद्द करने या इस पर नेविगेट करने के लिए KEYCODE_NAVIGATE_NEXT फ़्लिक के साथ बायां-दायां ऐक्सिस.
  • उन एलिमेंट के मुख्य इवेंट को इंटरसेप्ट न करें जो इसका हिस्सा नहीं हैं यूज़र इंटरफ़ेस, जैसे कि ऑफ़स्क्रीन या कुछ हद तक दिखने वाले व्यू कवर किया गया. यह किसी भी मुख्य इवेंट की तरह ही होता है.
  • हाथ के जेस्चर में बार-बार फ़्लिक करने वाले जेस्चर का इस्तेमाल न करें. इसका असर सिस्टम के "कलाई को हिलाना" पर पड़ सकता है हाथ के जेस्चर.
  • जेस्चर से जुड़े मुख्य इवेंट पाने के लिए, किसी व्यू में फ़ोकस; View.setFocusable() देखें.

    हाथ के जेस्चर को मुख्य इवेंट माना जाता है. इसलिए, तो वे "टच मोड" से ट्रांज़िशन को बाहर कर देते हैं ऐसा हो सकता है कि चीज़ें. क्योंकि उपयोगकर्ता, टच और टच कंट्रोल के बीच स्विच कर सकते हैं तो View::setFocusableInTouchmode() तरीका ज़रूरी हो सकता है. कुछ मामलों में, यह भी हो सकता है कि setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS) इसलिए टच मोड में या उससे बदलने के बाद, जब फ़ोकस बदलता है, तो लक्षित दृश्य पर फ़ोकस होता है.

  • requestFocus() का इस्तेमाल करें और clearFocus() ध्यान से:
    • requestFocus() पर कॉल करते समय, पक्का करें कि यह फ़ोकस करने के लिए. अगर व्यू ऑफ़स्क्रीन है या किसी दूसरे व्यू से ढका हुआ है, तो जब जेस्चर कॉलबैक ट्रिगर होते हैं, तो आश्चर्य हो सकता है.
    • clearFocus() तरीका, किसी अन्य विषय को ढूंढने के लिए फ़ोकस खोज शुरू करता है उपयुक्त दृश्य. व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) के आधार पर, यह खोज हो सकती है नॉन-ट्रिवियल कंप्यूटेशन की ज़रूरत है. इससे यह भी काम किया जा सकता है कि ऐसे व्यू पर फ़ोकस करें जिस पर आपको फ़ोकस करने की उम्मीद न हो.
  • मुख्य इवेंट, व्यू में फ़ोकस के साथ सबसे पहले डिलीवर किए जाते हैं हैरारकी है. अगर फ़ोकस किया गया व्यू, इवेंट को हैंडल नहीं करता है—दूसरे शब्दों में, तो यह false—इवेंट को पैरंट व्यू में नहीं भेजा गया है, यहां तक कि कि इसे फ़ोकस किया जा सकता हो और इसके पास KeyListener हो. इसके बजाय, इवेंट को मौजूदा गतिविधि के लिए डिलीवर किया जाता है व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) को फ़ोकस में रखना.

    इसलिए, यह ज़रूरी हो सकता है कि सभी इवेंट को उच्च लेवल पर कैच कर सकते हैं, फिर प्रासंगिक कोड पास कर सकते हैं. इसके अलावा, गतिविधि को सब-क्लास में शामिल करके, कुंजियों को इंटरसेप्ट करने का dispatchKeyEvent(KeyEvent event) तरीका या जब उन्हें हैंडल न किया जाए, तो उन्हें हैंडल करें. निचली लेयर होती हैं.