الساعه [إستخدام إيماءات المعصم]

الإعلانات

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

 

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

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

تحتوي الأمثلة التي توضح إستخدام إيماءات المعصم أيضاً على:

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

– في المطار مع الأمتعة، تصفح الرحلة ومعلومات البوابة

– تصفح المقالات الإخبارية

لمراجعة إيماءات المعصم على ساعتك، تأكد من تشغيل الإيماءات بتحديد الإعدادات> الإيماءات> تشغيل إيماءات المعصم.

ثم أكمل البرنامج التعليمي للإيماءات على الساعه (الإعدادات> الإيماءات> تشغيل البرنامج التعليمي).

الإيماءة التالية من مساعد نظام تشغيل الساعه  غير متاحة للتطبيقات:

– هز المعصم

يمكن إستخدام إيماءات المعصم بهذه الطرق:

بإستخدام مخطط منحني، يحتوي على إجراءات إيماءة محددة مسبقاً
بإستخدام الأحداث الرئيسية مباشرة لتحديد إجراءات مستخدم جديدة

 

يتم تعيين كل إيماءة للمعصم إلى ثابت عدد صحيح من فئة “الحدث الرئيسي” KeyEvent، كما هو موضح في الجدول التالي:

الإيماءة الحدث الرئيسي الوصف
هز المعصم للخارج KEYCODE_NAVIGATE_NEXT رمز هذا المفتاح ينتقل إلى العنصر التالي
هز المعصم للداخل KEYCODE_NAVIGATE_PREVIOUS رمز هذا المفتاح ينتقل إلى العنصر السابق

 

 

 

 

 

إستخدم مخطط منحني لدعم إيماءات المعصم


توفر الفئة WearableRecyclerView مخطط منحني للقوائم وتدعم إيماءات المعصم تلقائياً. تحتوي الفئة على إجراءات محددة مسبقاً..

لحدوث إيماءات المعصم عندما تكون المعاينه في وضع التركيز. للحصول على معلومات حول إستخدام فئة WearableRecyclerView، راجع إنشاء القوائم. انظر أيضاً أفضل الممارسات.

 

ملاحظة: الفئة WearableRecyclerView تحل محل فئة مشابهة تم إيقافها في مكتبة دعم الساعه.

 

حتى إذا كنت تستخدم الفئة WearableRecyclerView، قد تحتاج إلى إستخدام الثوابت من فئة “الحدث الرئيسي” KeyEvent.

يمكن تجاوز الإجراءات المعرفة مسبقاً عن طريق جعل الفئة WearableRecyclerView فئة فرعية وإعادة تنفيذ الإستدعاء ()onKeyDown.

يمكن تعطيل السلوك بالكامل بإستخدام (setEnableGestureNavigation (false. راجع أيضاً معالجة إجراءات لوحة المفاتيح.

 

 

 

 

 

 

إستخدم الأحداث الرئيسية مباشرة


يمكنك إستخدام الأحداث الرئيسية خارج الفئة WearableRecyclerView لتشغيل إجراءات جديدة كإستجابةً لأحداث الإيماءات. و الأهم من ذلك، أحداث الإيماءات هذه:

– يتم التعرف عليها عندما يكون الجهاز في الوضع النشط
– يتم تسليمها بنفس الطريقة مثل جميع الأحداث الرئيسية

 

على وجه التحديد، يتم تسليم هذه الأحداث إلى النشاط العلوي، إلى المعاينه ذات لوحة المفاتيح في وضع التركيز.

تماماً مثل أي حدث رئيسي آخر، يمكن للفئة التي ترتبط بتفاعل المستخدم (مثل المعاينه أو النشاط) الذي ينفذ إستدعاء..

الحدث الرئيسي KeyEvent.Callback يمكن الإستماع إلى الأحداث الرئيسية التي تتعلق بإيماءات المعصم.

إطار عمل الأندرويد يقوم بإستدعاء العرض أو النشاط الذي يتضمن التركيز على الأحداث الرئيسية؛

بالنسبة للإيماءات، يتم إستدعاء طلب دالة ()onKeyDown عند حدوث الإيماءات.

على سبيل المثال، قد يلغي أحد التطبيقات إجراءات محددة مسبقاً في معاينة أو نشاط ما (كلاً منهما ينفذ 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 deemed
                // 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 deemed 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;
 }
}

 

 

 

 

 

 

أفضل الممارسات


– راجع صفحات الحدث الرئيسي و طلب الحدث الرئيسي لتسليم الأحداث الرئيسية إلى المعاينة والنشاط.

– الحفاظ على التناسق وفقاً للإتجاه:

– إستخدم “هز المعصم للأمام” “Flick wrist out” للإنتقال للتالي، “هز المعصم للخلف” “Flick wrist in” للإنتقال للسابق.

– أحصل على لمسة موازية للإيماءة.

– قم بتقديم ملاحظات مرئية.

– لا تستخدم رمز المفتاح لتنفيذ وظيفة قد تكون غير مفهومة لبقية النظام.

مثال، لا تستخدم KEYCODE_NAVIGATE_NEXT لإلغاء إجراء أو للتنقل بين المحور الأيسر والأيمن بإستخدام الهز.

– لا تعترض الأحداث الأساسية على العناصر التي لا تشكل جزءاً من واجهة المستخدم..

مثال، المعاينات التي تكون خارج الشاشة أو تكون مغطاة جزئياً. هذا مشابه لأي حدث رئيسي آخر.

– لا تعيد تفسير إيماءات الهز المتكررة في الإيماءة الجديدة الخاصة بك. فقد تتعارض مع إيماءة النظام “هز المعصم.

– لكي تتلقى المعاينه أحداث إيماءة رئيسية، يجب أن تكون في وضع التركيز. اقرأ ()View::setFocusable.

لأن الإيماءات تعامل كأحداث رئيسية، فإنها تؤدي إلى الخروج من “وضع اللمس” الذي قد يؤدي إلى حدوث أشياء غير متوقعة.

لذا، بما أن المستخدمين قد يبدلون بين إستخدام اللمس والإيماءات، فقد يكون إستخدام الدالة ()View::setFocusableInTouchmode ضرورياً.

في بعض الحالات، قد يكون من الضروري أيضاً إستخدام (setDescendantFocusability(FOCUS_BEFORE_DESCENDANTS بحيث أنه عندما يتغير التركيز بعد التغيير من أو إلى “وضع اللمس”، فأن معاينتك المقصوده تصبح في وضع التركيز.

– إستخدم ()requestFocus و ()clearFocus بحذر:

  • عند استدعاء ()requestFocus ، تأكد من أن المعاينة يجب أن تكون في وضع التركيز بالفعل.

 

إذا كانت المعاينه خارج الشاشه، أو تم تغطيتها بواسطة معاينة أخرى، يمكن أن تحدث مفاجآت عندما تؤدي الإيماءات إلى تشغيل الإستدعاءات.

 

  • يبدأ ()clearFocus بحث مركز للعثور على معاينة أخرى مناسبه. بناءً على التسلسل الهرمي للمعاينه..

 

قد يتطلب هذا البحث إجراء حساب غير بسيط. ويمكن أن ينتهي الأمر أيضاً بتعيين التركيز على معاينة لا تتوقع أن يتم تركيزها.

 

– يتم تسليم الأحداث الرئيسية أولاً إلى المعاينة مع التركيز على التسلسل الهرمي للمعاينه.

إذا كانت المعاينة المركّزه لا تتعامل مع الحدث (بمعنى أنها تقوم بإرجاع القيمة “خطأ”)، فلن يتم تسليم الحدث إلى المعاينة الأصلية..

حتى لو كان بإمكانها تلقي التركيز ولديها KeyListener. بدلاً من ذلك، يتم تسليم الحدث إلى النشاط الحالي مع إبقاء التسلسل الهرمي للمعاينة في وضع التركيز.

وبالتالي، قد يكون من الضروري إلتقاط جميع الأحداث على مستوى أعلى ومن ثم تمرير الأكواد ذات الصلة إلى الأسفل.

و بدلاً من ذلك، يمكنك جعل النشاط فئة فرعية وتجاوز الداله (dispatchKeyEvent(KeyEvent event للتأكد من إعتراض..

تلك المفاتيح عند الضرورة أو يتم التعامل معها عند عدم التعامل معها في الطبقات الأدنى.

 

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات