استخدام إيماءات المعصم على Wear OS

يمكن أن تتيح إيماءات المعصم إجراء تفاعلات سريعة بيد واحدة مع تطبيقك عندما تكون الشاشة التي تعمل باللمس غير مريحة.

على سبيل المثال، يمكن للمستخدم الانتقال للأعلى أو للأسفل من خلال الإشعارات بيد واحدة أثناء حمل كوب من الماء آخر. تشمل حالات الاستخدام الأخرى لإيماءات المعصم ما يلي:

  • في تطبيق للركض، التنقل عبر الشاشات العمودية التي تعرض الخطوات التي تم اتخاذها والوقت المنقضي والوتيرة الحالية
  • في أحد تطبيقات السفر، التمرير عبر معلومات الرحلة الجوية والبوابة
  • التنقّل بين المقالات في تطبيق للأخبار

لمراجعة إيماءات المعصم على ساعة جهازك، فتأكد من أن الإيماءات عن طريق اختيار الإعدادات > الميزات المتقدّمة > الإيماءات > إيماءات المعصم تفعيل ثم أكمل الدليل التوجيهي عن الإيماءات على الساعة من خلال اختيار تشغيل البرنامج التعليمي

ملاحظة: هز المعصم هو إيماءة الرجوع إلى الخلف أو التراجع على مستوى النظام. ولا يتوفّر للتطبيقات لتخصيصها

يمكن استخدام إيماءات المعصم بالطرق التالية، كما هو موضح في هذا الدليل:

يتم ربط كل إيماءة معصم بالعدد الثابت 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) لاعتراض المفاتيح عند الضرورة أو التعامل معها عندما لا يتم التعامل معها في والطبقات السفلية.