يمكن أن تتيح إيماءات المعصم إجراء تفاعلات سريعة بيد واحدة مع تطبيقك عندما تكون الشاشة التي تعمل باللمس غير مريحة.
على سبيل المثال، يمكن للمستخدم الانتقال للأعلى أو للأسفل من خلال الإشعارات بيد واحدة أثناء حمل كوب من الماء آخر. تشمل حالات الاستخدام الأخرى لإيماءات المعصم ما يلي:
- في تطبيق للركض، التنقل عبر الشاشات العمودية التي تعرض الخطوات التي تم اتخاذها والوقت المنقضي والوتيرة الحالية
- في أحد تطبيقات السفر، التمرير عبر معلومات الرحلة الجوية والبوابة
- التنقّل بين المقالات في تطبيق للأخبار
لمراجعة إيماءات المعصم على ساعة جهازك، فتأكد من أن الإيماءات عن طريق اختيار الإعدادات > الميزات المتقدّمة > الإيماءات > إيماءات المعصم تفعيل ثم أكمل الدليل التوجيهي عن الإيماءات على الساعة من خلال اختيار تشغيل البرنامج التعليمي
ملاحظة: هز المعصم هو إيماءة الرجوع إلى الخلف أو التراجع على مستوى النظام. ولا يتوفّر للتطبيقات لتخصيصها
يمكن استخدام إيماءات المعصم بالطرق التالية، كما هو موضح في هذا الدليل:
- باستخدام التنسيق المنحني، الذي تتضمن إجراءات إيماءة محددة مسبقًا
- باستخدام الأحداث الرئيسية مباشرةً تحديد إجراءات المستخدم الجديد
يتم ربط كل إيماءة معصم بالعدد الثابت 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)
لاعتراض المفاتيح عند الضرورة أو التعامل معها عندما لا يتم التعامل معها في والطبقات السفلية.