قد يتضمّن تطبيقك مهام متعددة الخطوات للمستخدمين. على سبيل المثال، قد يحتاج تطبيقك إلى توجيه المستخدمين من خلال شراء محتوى إضافي، أو إعداد إعدادات تهيئة معقّدة، أو مجرد تأكيد القرار. تتطلب جميع هذه المهام توجيه المستخدمين خلال عملية واحدة أو أكثر مرتبة الخطوات أو القرارات.
توفر مكتبة androidx.leanback صفوفًا لتنفيذ مهام المستخدمين متعددة الخطوات. هذه الصفحة
كيفية استخدام
صف واحد (GuidedStepSupportFragment
)
لإرشاد المستخدم خلال سلسلة من القرارات لإنجاز مهمة ما. GuidedStepSupportFragment
أفضل الممارسات المتعلّقة بواجهة مستخدم التلفزيون لتسهيل فهم المهام المتعددة الخطوات والتنقل فيها على أجهزة التلفزيون.
تقديم تفاصيل عن خطوة
تمثِّل السمة GuidedStepSupportFragment
خطوة واحدة في سلسلة بيانات.
الخطوات. تقدِّم هذه الميزة بشكلٍ مرئي عرضًا إرشاديًا مع
قائمة بالإجراءات أو القرارات المحتملة للخطوة.
![](https://developer.android.com/static/images/training/tv/playback/guided-step-screen.png?authuser=9&hl=ar)
الشكل 1. مثال على خطوة إرشادية.
لكل خطوة في المهمة متعددة الخطوات، قم بتوسيع
GuidedStepSupportFragment
وتقديم معلومات سياقية عن
الخطوة والإجراءات التي يمكن للمستخدم اتخاذها. تجاهُل
onCreateGuidance()
وتُرجع صفحة
GuidanceStylist.Guidance
الذي يحتوي على سياق
معلومات، مثل عنوان الخطوة ووصفها ورمزها، كما هو موضّح في المثال التالي:
Kotlin
override fun onCreateGuidance(savedInstanceState: Bundle?): GuidanceStylist.Guidance { return GuidanceStylist.Guidance( getString(R.string.guidedstep_first_title), getString(R.string.guidedstep_first_description), getString(R.string.guidedstep_first_breadcrumb), activity.getDrawable(R.drawable.guidedstep_main_icon_1) ) }
Java
@Override public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) { String title = getString(R.string.guidedstep_first_title); String breadcrumb = getString(R.string.guidedstep_first_breadcrumb); String description = getString(R.string.guidedstep_first_description); Drawable icon = getActivity().getDrawable(R.drawable.guidedstep_main_icon_1); return new GuidanceStylist.Guidance(title, description, breadcrumb, icon); }
إضافة الفئة الفرعية GuidedStepSupportFragment
إلى طلبك
النشاط من خلال إجراء مكالمة
GuidedStepSupportFragment.add()
في طريقة onCreate()
لنشاطك
إذا كان نشاطك يحتوي على GuidedStepSupportFragment
فقط
عناصر، استخدِم GuidedStepSupportFragment.addAsRoot()
بدلاً من add()
لإضافة أول GuidedStepSupportFragment
. استخدام
تساعد السياسة addAsRoot()
في التأكّد من أنّ المستخدم قد ضغط على الزر "رجوع" في جهاز التحكّم عن بُعد في التلفزيون أثناء المشاهدة.
وGuidedStepSupportFragment
الأول، وكلاهما
تم إغلاق النشاط الرئيسي و"GuidedStepSupportFragment
".
ملاحظة: يمكنك إضافة
GuidedStepSupportFragment
آليًا،
وليس في ملفات XML للتنسيق.
إنشاء إجراءات المستخدمين ومعالجتها
إضافة إجراءات المستخدم من خلال إلغاء
onCreateActions()
في الإلغاء، أضِف GuidedAction
جديدة لكل
بند العمل وتقديم سلسلة الإجراء ووصفه ومعرفه. استخدام
GuidedAction.Builder
لإضافة إجراءات جديدة.
Kotlin
override fun onCreateActions(actions: MutableList<GuidedAction>, savedInstanceState: Bundle?) { super.onCreateActions(actions, savedInstanceState) // Add "Continue" user action for this step actions.add(GuidedAction.Builder() .id(CONTINUE) .title(getString(R.string.guidedstep_continue)) .description(getString(R.string.guidedstep_letsdoit)) .hasNext(true) .build()) ...
Java
@Override public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) { // Add "Continue" user action for this step actions.add(new GuidedAction.Builder() .id(CONTINUE) .title(getString(R.string.guidedstep_continue)) .description(getString(R.string.guidedstep_letsdoit)) .hasNext(true) .build()); ...
لا تقتصر الإجراءات على اختيار سطر واحد. فيما يلي أنواع إضافية من الإجراءات التي يمكنك إنشاؤها:
-
يمكنك إضافة إجراء تصنيف المعلومات لتوفير معلومات إضافية حول خيارات المستخدمين عن طريق وضع
infoOnly(true)
عندما تكون السياسةinfoOnly
صحيحة، لا يمكن للمستخدمين اختيار الإجراء. -
إضافة إجراء نصي قابل للتعديل من خلال الإعداد
editable(true)
عند ضبطeditable
على true، يمكن للمستخدم إدخال نص في إجراء محدّد باستخدام عن بُعد أو لوحة مفاتيح متصلة. تجاهُلonGuidedActionEditedAndProceed()
للحصول على النص المعدَّل الذي أدخله المستخدم. يمكنك أيضًا إلغاءonGuidedActionEditCanceled()
لمعرفة الوقت الذي يلغي فيه المستخدم الإدخال. -
أضف مجموعة من الإجراءات التي تعمل مثل أزرار الاختيار القابلة للتحديد باستخدام
checkSetId()
بقيمة معرّف مشتركة لتجميع الإجراءات في مجموعة. جميع الإجراءات بنفس القائمة بنفس يُعتبر معرف مجموعة التحقق مرتبط. عندما يحدد المستخدم أحد الإجراءات ضمن هذه المجموعة، يتم التحقق من الإجراء وتصبح جميع الإجراءات الأخرى غير محددة. -
يمكنك إضافة إجراء منتقي التاريخ باستخدام
GuidedDatePickerAction.Builder
بدلاً منGuidedAction.Builder
فيonCreateActions()
. تجاهُلonGuidedActionEditedAndProceed()
للحصول على قيمة التاريخ المعدّل التي أدخلها المستخدم. - أضف إجراءً يستخدم الإجراءات الفرعية للسماح للمستخدم بالاختيار من قائمة موسعة من الخيارات. يتم توضيح الإجراءات الفرعية في قسم إضافة الإجراءات الفرعية.
- إضافة إجراء زر يظهر على يسار قائمة الإجراءات ويسهل إليه على الفور. يتم وصف إجراءات الأزرار في زر الإضافة. إجراءات.
يمكنك أيضًا إضافة مؤشر مرئي أن تحديد إجراء ما
إلى خطوة جديدة من خلال تحديد
hasNext(true)
للتعرّف على جميع السمات المختلفة التي يمكنك ضبطها، يمكنك مراجعة
GuidedAction
للرد على الإجراءات، يمكنك إلغاء
onGuidedActionClicked()
ومعالجة المستند الذي تم تمريره
GuidedAction
تحديد الإجراء المحدد من خلال
فحص GuidedAction.getId()
.
إضافة الإجراءات الفرعية
قد تتطلب منك بعض الإجراءات منح المستخدم مجموعة إضافية من الخيارات. حاسمة
يمكن لـ GuidedAction
تحديد قائمة
الإجراءات الفرعية التي يتم عرضها كقائمة بالإجراءات الثانوية.
![](https://developer.android.com/static/images/training/tv/playback/guided-step-subaction.png?authuser=9&hl=ar)
الشكل 2. الإجراءات الفرعية للخطوات الإرشادية.
يمكن أن تحتوي قائمة الإجراءات الفرعية على إجراءات عادية أو إجراءات زر اختيار، لكن وليس أداة اختيار التاريخ أو الإجراءات النصية القابلة للتعديل. كما أنه لا يمكن أن يكون لكل إجراء فرعي خاص به من العناصر الفرعية، لأن النظام لا يدعم أكثر من مستوى واحد من الإجراءات الفرعية.
لإضافة إجراءات فرعية، يجب أولاً إنشاء وملئ قائمة
GuidedAction
عناصر تعمل كإجراءات فرعية، كما هو موضّح في المثال التالي:
Kotlin
subActions.add(GuidedAction.Builder() .id(SUBACTION1) .title(getString(R.string.guidedstep_subaction1_title)) .description(getString(R.string.guidedstep_subaction1_desc)) .build()) ...
Java
List<GuidedAction> subActions = new ArrayList<GuidedAction>(); subActions.add(new GuidedAction.Builder() .id(SUBACTION1) .title(getString(R.string.guidedstep_subaction1_title)) .description(getString(R.string.guidedstep_subaction1_desc)) .build()); ...
في onCreateActions()
، عليك إنشاء مستوى أعلى
GuidedAction
التي تعرض
قائمة بالإجراءات الفرعية عند تحديدها:
Kotlin
... actions.add(GuidedAction.Builder() .id(SUBACTIONS) .title(getString(R.string.guidedstep_subactions_title)) .description(getString(R.string.guidedstep_subactions_desc)) .subActions(subActions) .build()) ...
Java
@Override public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) { ... actions.add(new GuidedAction.Builder() .id(SUBACTIONS) .title(getString(R.string.guidedstep_subactions_title)) .description(getString(R.string.guidedstep_subactions_desc)) .subActions(subActions) .build()); ... }
أخيرًا، استجب لتحديدات الأفعال الفرعية بتجاوز
onSubGuidedActionClicked()
:
Kotlin
override fun onSubGuidedActionClicked(action: GuidedAction): Boolean { // Check for which action was clicked and handle as needed when(action.id) { SUBACTION1 -> { // Subaction 1 selected } } // Return true to collapse the subactions menu or // false to keep the menu expanded return true }
Java
@Override public boolean onSubGuidedActionClicked(GuidedAction action) { // Check for which action was clicked and handle as needed if (action.getId() == SUBACTION1) { // Subaction 1 selected } // Return true to collapse the subactions menu or // false to keep the menu expanded return true; }
إضافة إجراءات الزر
إذا كانت الخطوة الإرشادية تحتوي على قائمة كبيرة من الإجراءات، قد يضطر المستخدمون إلى التمرير عبر القائمة للوصول إلى الإجراءات الأكثر استخدامًا. استخدام إجراءات الأزرار للفصل من الإجراءات شائعة الاستخدام من قائمة الإجراءات. تظهر إجراءات الأزرار بجوار قائمة الإجراءات ويسهل الانتقال إليها.
![](https://developer.android.com/static/images/training/tv/playback/guided-step-buttonaction.png?authuser=9&hl=ar)
الشكل 3. إجراءات زر الخطوات الإرشادية
يتم إنشاء إجراءات الأزرار والتعامل معها تمامًا مثل الإجراءات العادية، لكنك تنشئ
إجراءات الزر في
onCreateButtonActions()
بدلاً من onCreateActions()
. الاستجابة لإجراءات الأزرار في
onGuidedActionClicked()
استخدِم إجراءات الأزرار لتنفيذ إجراءات بسيطة، مثل إجراءات التنقّل بين الخطوات. لا تستخدِم إجراء منتقي التاريخ أو إجراءات أخرى قابلة للتعديل كإجراءات للزر. ويجب أيضًا ألا تحتوي إجراءات الأزرار على إجراءات فرعية.
تجميع الخطوات الإرشادية في تسلسل إرشادي
GuidedStepSupportFragment
يمثل خطوة واحدة. لإنشاء تسلسل مُرتب من الخطوات، قم بتجميع العديد
GuidedStepSupportFragment
عناصر معًا باستخدام
المبلغ المطلوب إضافته: GuidedStepSupportFragment.add()
الخطوة التالية في التسلسل إلى مكدس الأجزاء.
Kotlin
override fun onGuidedActionClicked(action: GuidedAction) { val fm = fragmentManager when(action.id) { CONTINUE -> GuidedStepSupportFragment.add(fm, SecondStepFragment()) } }
Java
@Override public void onGuidedActionClicked(GuidedAction action) { FragmentManager fm = getFragmentManager(); if (action.getId() == CONTINUE) { GuidedStepSupportFragment.add(fm, new SecondStepFragment()); } ...
إذا ضغط المستخدم على زر "الرجوع" على جهاز التحكّم عن بُعد في التلفزيون، سيعرض الجهاز المفتاح السابق.
GuidedStepSupportFragment
في حزمة الأجزاء. إذا كنت
تقديم GuidedAction
الخاصة بك والتي
يعود إلى الخطوة السابقة، فيمكنك تنفيذ سلوك الرجوع من خلال استدعاء
getFragmentManager().popBackStack()
إذا كنت بحاجة إلى إعادة المستخدِم إلى خطوة سابقة في التسلسل، استخدِم
popBackStackToGuidedStepSupportFragment()
للعودة إلى عنصر GuidedStepSupportFragment
محدد في حزمة الأجزاء.
عندما ينهي المستخدم الخطوة الأخيرة في التسلسل، استخدم
finishGuidedStepSupportFragments()
لإزالة الكل
GuidedStepSupportFragment
مثالاً
من الحزمة الحالية والعودة إلى النشاط الأصلي الأصلي. إذا كانت
تمت إضافة أول GuidedStepSupportFragment
باستخدام addAsRoot()
، يتم إجراء اتصال
يؤدي استخدام finishGuidedStepSupportFragments()
إلى إغلاق النشاط الرئيسي أيضًا.
تخصيص عرض الخطوات
يمكن للفئة GuidedStepSupportFragment
استخدام سمة
المظاهر التي تتحكم في جوانب العرض مثل تنسيق نص العنوان أو انتقال الخطوة
والرسوم المتحركة. يجب اكتساب المظاهر المخصّصة من
Theme_Leanback_GuidedStep
ويمكنه تقديم
إلغاء القيم للسمات المحددة في
GuidanceStylist
و
GuidedActionsStylist
لتطبيق مظهر مخصّص على GuidedStepSupportFragment
، يُرجى اتّباع الخطوات التالية:
نفِّذ أيًّا ممّا يلي:
-
يمكنك تطبيق المظهر على نشاط أحد الوالدَين من خلال ضبط سمة
android:theme
على عنصر النشاط في بيان Android. يؤدي ضبط هذه السمة إلى تطبيق المظهر على كل العناصر الفرعية. وهي الطريقة الأكثر وضوحًا لتطبيق مظهر مخصص إذا كان النشاط الرئيسي يحتوي فقطGuidedStepSupportFragment
عناصر -
إذا كان نشاطك يستخدم موضوعًا مخصّصًا ولا تريد تطبيق
نمطان (
GuidedStepSupportFragment
) على طرق العرض الأخرى في النشاط، إضافةLeanbackGuidedStepTheme_guidedStepTheme
إلى موضوع النشاط المخصّص الحالي تشير هذه السمة إلى المظهر المخصص الذي عناصرGuidedStepSupportFragment
فقط في استخدام نشاطك البدني. -
إذا كنت تستخدم كائنات
GuidedStepSupportFragment
في الأنشطة التي تشكل جزءًا من نفس المهمة الشاملة متعددة الخطوات وتريد استخدام جدول زمني موضوع مرئي عبر جميع الخطوات، وإلغاءGuidedStepSupportFragment.onProvideTheme()
وعرض المظهر المخصّص
لمزيد من المعلومات حول كيفية إضافة أنماط ومظاهر، يمكنك الاطّلاع على الأنماط والمظاهر:
تستخدم الفئة GuidedStepSupportFragment
سمات
فئات المصمّمين للوصول إلى سمات المظاهر وتطبيقها.
يستخدم الصف GuidanceStylist
معلومات المظهر.
للتحكم في عرض طريقة عرض الإرشادات اليسرى، بينما
يستخدم صف واحد (GuidedActionsStylist
) معلومات عن المظهر.
للتحكم في عرض الإجراءات الصحيحة.
لتخصيص النمط المرئي لخطواتك بطرق تتجاوز ما يوفره تخصيص المظهر، يمكنك استخدام الفئة الفرعية
GuidanceStylist
أو
GuidedActionsStylist
وإرجاع الفئة الفرعية في
GuidedStepSupportFragment.onCreateGuidanceStylist()
أو
GuidedStepSupportFragment.onCreateActionsStylist()
وللحصول على تفاصيل حول ما يمكنك تخصيصه في هذه الفئات الفرعية، يمكنك مراجعة المستندات حول
GuidanceStylist
و
GuidedActionsStylist