تخصيص الجزء المزدوج

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

العودة إلى جزء واحد

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

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

مفاتيح الرأس

نظرًا لأن أنشطة CarSettings المختلفة يمكن أن تحتوي على IA مخصص، يتم توفير تعيين مفتاح الرأس لتبسيط التخصيصات. في 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 سيتم عرض عرض الحظر المقيد UX على مثيلات 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 .