تخصيص اللوحة المزدوجة

يقدّم نظام التشغيل Android 12 تصميم لوحة مزدوجة، مع قائمة L0 ثابتة على اليسار ولوحة محتوى على اليمين. توفّر هذه الميزة العديد من خيارات التخصيص الجديدة. توضّح هذه الصفحة تفاصيل هذه الميزات وتوضّح كيفية تخصيص إعداداتك المفضّلة.

الرجوع إلى اللوحة الواحدة

يعرض تطبيق CarSettings الآن تلقائيًا طريقة العرض المكوّنة من لوحتَين عندما يكون عرض نافذة التطبيق أكبر من 1400dp أو يساويه، ويعرض طريقة العرض المكوّنة من لوحة واحدة في الحالات الأخرى. لتخصيص هذا لجهاز معيّن، استخدِم تراكب موارد وقت التشغيل (RRO) لاستهداف قيم الإعدادات اللازمة:

القيمة الوصف
config_global_force_single_pane اضبط القيمة على true إذا كان سيتم تشغيل التطبيق بأكمله في وضع اللوحة الواحدة.
config_homepage_fragment_class تُحدِّد المقتطف الأوّلي للصفحة الرئيسية. في وضع "الشريحة المزدوجة"، يتم استخدام هذا الخيار لتحديد المقتطف الأولي في لوحة المحتوى. وفي جزء واحد، يجب أن يكون هذا هو جزء الصفحة الرئيسية.

مفاتيح العناوين

بما أنّ أنشطة CarSettings المختلفة يمكن أن تتضمّن واجهة مستخدم مخصّصة، يتم توفير تعيين مفتاح العنوان لتبسيط عمليات التخصيص. في AndroidManifest.xml، يكون لكل نشاط يدعم اللوحة المزدوجة TOP_LEVEL_HEADER_KEY محدد في بياناته الوصفية. تشير هذه القيمة إلى مفتاح محدّد في res/values/header_keys.xml، والذي يتم ربطه بمفتاح الإعدادات المفضّلة لعنصر القائمة من المستوى الأعلى الذي يندرج تحته الجزء الافتتاحي. لذلك، في حال تغيير المقتطف الأوّلي لنشاط معيّن أو إعادة ترتيب ملف IA بحيث يقع مقتطف معيّن ضمن إعدادات مفضّلة مختلفة من المستوى الأعلى، يمكن تعديل عمليات الربط ذات الصلة في ملف header_keys.xml لتحديد القيمة الصحيحة.

تخصيص تنسيق النشاط

يمكن العثور على تنسيق BaseCarSettingsActivity في res/layout/car_setting_activity وفي الأقسام التالية:

القيمة الوصف
top_level_menu جزء من القائمة ذات المستوى الأعلى يظهر في الإعدادات المزوّدة بشقّين تحدّد السمة top_level_menu_width عرض هذا القسم. يظهر التنسيق الأساسي للهيكل (باستخدام شريط الأدوات) حول طريقة العرض هذه.
top_level_divider خط عمودي يقسم النافذتَين ويمكن تخصيص عرضه باستخدام top_level_divider_width.
fragment_container_wrapper تنسيق الغلاف للوحة المحتوى (أو اللوحة الرئيسية في الإعداد المكوّن من لوحة واحدة) يظهر التخطيط الأساسي للهيكل (باستخدام شريط الأدوات) حول طريقة العرض هذه.
settings_focus_parking_view التنفيذ المخصّص لـ FocusParkingView للحفاظ على التركيز الدوّار عند الحاجة
fragment_container حاوية المحتوى الرئيسي تستخدم أجزاء المحتوى هذا التنسيق كتنسيق مستهدف.
restricted_message عرض الحظر المحدود لتجربة المستخدم ليتم عرضه على نُسخ BaseFragment

الشكل 1: تنسيق اللوحة المزدوجة

الإعدادات المفضّلة على مستوى أعلى

الإعدادات المفضّلة ذات المستوى الأعلى هي CarUiPreferences مخصّصة بتنسيق معدَّل قليلاً لتغيير ارتفاع الإعدادات المفضّلة وشكل الخلفية. هناك العديد من الطرق المختلفة لتخصيص مظهر هذه التفضيلات:

القيمة الوصف
res/layout/top_level_preference.xml التراكب على تنسيق الإعدادات المفضّلة الكاملة
top_level_preference_min_height الحد الأدنى لارتفاع الخيار المفضّل على مستوى أعلى وفقًا للمحتوى (على سبيل المثال، يتوفر عنوان فرعي)، قد تكون الإعدادات المفضّلة أطول من هذه القيمة.
top_level_preference_corner_radius نصف قطر التقريب في الزاوية.
top_level_preference_background خلفية الإعدادات المفضّلة على المستوى الأعلى عندما لا تكون مميّزة حاليًا
top_level_preference_highlight خلفية الإعدادات المفضّلة ذات المستوى الأعلى عند تمييزها

الرموز ذات المستوى الأعلى

يوضّح الشكل 2 كيف تتكوّن الرموز من المستوى الأعلى الآن من رمز متّجه داخل شكل خلفية ملون. تم ضبط هذا الشكل حاليًا ليتوافق مع شكل بيضاوي أو مستطيل. يتم ضبط الشكل تلقائيًا على الشكل البيضاوي.

لتغيير القيمة التلقائية، عدِّل القيمة في config_top_level_icon_shape (حيث يكون 0 مستطيلاً و1 بيضاويًا). يتم إنشاء الرموز من خلال ضبط رمز المقدّمة من خلال top_level_foreground_icon_inset من شكل الخلفية. يحتوي كل رمز من رموز المستوى الأعلى على لون واجهة محدّد في res/values/colors.xml ولون خلفية محدّد في مجلد res/color.

لإنشاء مظهر مخصّص، يمكنك إلغاء جميع قيم الألوان.

الشكل 2: مكونات الإعدادات المفضّلة ذات المستوى الأعلى

ويتم أيضًا التعامل مع رموز الإعدادات المفضّلة التي تم إدخالها والتي تندرج ضمن الفئات المحدّدة من خلال "config_top_level_injection_categories" كرموز من المستوى الأعلى. يتمّ إدراج الأيقونات المقدَّمة بالقيمة نفسها وبالشكل نفسه المحدّد لجميع الأيقونات الأخرى ذات المستوى الأعلى (راجِع أعلاه). ومع ذلك، يتم تحديد الخلفية من خلال النظر في السمات التالية بهذا الترتيب:

  1. com.android.settings.bg.argb البيانات الوصفية من التطبيق الذي يتمّ حقن البيانات فيه
  2. com.android.settings.bg.hint البيانات الوصفية من تطبيق الحقن
  3. top_level_injected_default_background محدّد في res/values/colors.xml.

لتجاهل بيانات التطبيق التي يتم حقنها واستخدام الخلفية التلقائية دائمًا، اضبط config_top_level_injection_background_always_use_default على true.