مفتاح دوار ومدخلاته على الساعه

الإعلانات

مفتاح دوار ومدخلاته على الساعه

 

 

مفتاح دوار ومدخلاته على الساعه

تدعم الساعات إدخالاً بـ مفتاح دوار، مثل وجود زر جانبي دوار (RSB). عندما يدير المستخدم الزر، فإن المعاينة الحالية لتطبيقك يجب أن يتم تمريرها لأعلى أو لأسفل.

إذا كنت تستخدم ScrollView أو ListView أو HorizontalScrollView أو WearableRecyclerView في تطبيقك..

فإن معاينات تطبيقك ستدعم الإدخال الدورا إفتراضياً. إذا كنت تستخدم معاينات مخصصة غير تلك المسرودة..

أو إذا كنت تريد معالجة أحداث الإدخال الدوارة بشكلٍ يدوي، فراجع إضافة تمرير مخصص للإدخال الدوار.

 

راجع المصادر التالية:

مبادئ تصميم تطبيقات أنظمة تشغيل الساعات

 

 

 

 

مفتاح دوار ومدخلاته على الساعه

التركيز على أفضل الممارسات


للرد على أحداث الإدخال الدوار، يجب أن تكون معاينة التمرير في موضع التركيز “في المقدمة”. في معظم الحالات، يحدث هذا تلقائياً..

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

– إذا تم ربط المعاينه القابله للتمرير بعد ()Activity.onCreate (مثال، إذا كنت تنتظر طلب الشبكة لينتهي قبل بناء واجهة مستخدمك)، فيجب عليك إستدعاء requestFocus بعد ربطها.

– إذا كانت المعاينه القابله للتمرير مبدئياً “غير مرئية” INVISIBLE أو “غير موجوده” GONE، فيجب عليك إستدعاء requestFocus عندما تقوم بتعيينها على “مرئي” VISIBLE.

– إذا كان نشاطك يحتوي على عدة معاينات قابلة للتمرير (مثال، إذا كنت تستخدم التمرير المتداخل)..

فستحتاج إلى إختيار أحدهم ليتم تركيزه (عادةً بإستخدام العلامة </requestFocus>). التمرير المتداخل غير مدعوم حالياً للتمرير بإستخدام زر جانبي دوار RSB.

– إذا كانت واجهة مستخدمك تحتوي على معاينة أخرى تسرق التركيز عندما يتفاعل معها المستخدم (هذه حالة نادرة..

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

على المعاينه القابله للتمرير في حالة فقدان التركيز. عادة ما يتم ذلك عن طريق الإستماع إلى النقرات على المعاينه القابلة للتمرير وإستدعاء requestFocus كإستجابة.

 

 

 

 

 

 

مفتاح دوار ومدخلاته على الساعه

 

إضافة مدخلات تمرير دوار مخصصه


إذا كانت المعاينه القابله للتمرير لا تدعم إدخال التمرير الدوّار، أو إذا كنت تريد القيام بشيء آخر غير التمرير ..

كإستجابة لأحداث الإدخال الدوارة (تكبير/ تصغير ، تدوير العقرب، إلخ) ، يمكنك إستخدام دوال RotaryEncoder في مكتبة دعم الساعات.

يعرض مقتطف الكود التالي كيفية إستخدام RotaryEncoder لإضافة التمرير المخصص في معاينة التطبيق:

KOTLIN

myView.setOnGenericMotionListener(View.OnGenericMotionListener { v, ev ->
    if (ev.action == MotionEvent.ACTION_SCROLL && RotaryEncoder.isFromRotaryEncoder(ev)) {
        // Don't forget the negation here
        val delta = -RotaryEncoder.getRotaryAxisValue(ev) *
                RotaryEncoder.getScaledScrollFactor(context)

        // Swap these axes if you want to do horizontal scrolling instead
        v.scrollBy(0, Math.round(delta))

        return@OnGenericMotionListener true
    }

    false
})

JAVA

myView.setOnGenericMotionListener(new View.OnGenericMotionListener() {
    @Override
    public boolean onGenericMotion(View v, MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_SCROLL && RotaryEncoder.isFromRotaryEncoder(ev)) {
            // Don't forget the negation here
            float delta = -RotaryEncoder.getRotaryAxisValue(ev) * RotaryEncoder.getScaledScrollFactor(
            getContext());

            // Swap these axes if you want to do horizontal scrolling instead
            v.scrollBy(0, Math.round(delta));

            return true;
        }

        return false;
    }
});

 

 

 

 

 

إختبار زر الإدخال الدوار على المحاكي


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

على المحاكي عند تشغيل مشروعك، أو قم بسحب ملف APK إلى المحاكي لتثبيته.

لإختبار الإدخال الدوار على المحاكي:

1- من مدير SDK، إستخدم علامة التبويب أدوات SDK للحصول على محاكي الأندرويد الإصدار 26.0.3 أو أحدث.

2- قم بإنشاء AVD (جهاز الأندرويد الإفتراضي) بإستخدام واجهة برمجة التطبيقات المستوى 25.
في الإستوديو، حدد الأدوات> أندرويد > مدير AVD. أنشئ جهاز ساعه جديد بإستخدام واجهة برمجة التطبيقات المستوى 25.

3- قم بتشغيل المحاكي من اندرويد ستوديو.

4- جرب التمرير الدوار للإدخال.

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

 

يظهر مقطع الفيديو التالي إدخالاً دوار في المحاكي: 

 

 

 

 

 

نصائح سلوك التركيز


– تكون المعاينة قابلة للتركيز إذا كان لديها (focusableInTouchMode(true.

بشكلٍ إفتراضي، يأخذ هذا القيمة “صحيح” فقط للمعاينات القابلة للتمرير (مثال، ScrollView) و InputText.

– إفتراضياً، النقر على المعاينه لا يؤدي إلى التركيز عليها (حتى لو كانت قابلة للتركيز).

لإنجاز هذا السلوك، يجب أن تستمع المعاينه لأحداث النقر، وإستدعاء ()View.requestFocus  يدوياً.

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

إذا كان لديك عدة معاينات قابلة للتركيز في نشاطك، فقد لا تكون هذه هي المعاينة التي تريد تركيزها.

يمكنك التركيز على معاينة مختلفة بإستخدام العلامة </requestFocus> (أو عن طريق الإستدعاء يدوياً لـ  View.requestFocus في Activity.onResume).

– لا يتم تلقائياً تركيز المعاينة القابلة للتركيز في حالة ربطها أو إظهارها بعد إنشاء أحد الأنشطة..

حتى إذا لم يكن هناك معاينة مركزة حالياً. في هذه الحالة، تحتاج إلى إستدعاء View.requestFocus يدوياً.

– يتم إرسال أحداث الإدخال الدورا إلى المعاينة المركزة فقط. لا تقوم هذه الأحداث بإظهار “فقع\ bubble up” التسلسل الهرمي لواجهة المعاينه.

إذا لم يكن هناك معاينة مركزة، أو إذا كانت المعاينة المركزة ترجع القيمة “خطأ” من View.onGenericMotionEvent،

فحينها (وفقط حينها) سيتم إرسال الحدث إلى Activity.onGenericMotionEvent.

 


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

الإعلانات