يقدم 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
كأيقونات ذات مستوى أعلى. يتم إدراج الرموز المتوفرة بنفس القيمة وبنفس الشكل المحدد لجميع رموز المستوى الأعلى الأخرى (انظر أعلاه). ومع ذلك، يتم تحديد الخلفية من خلال النظر في السمات التالية بهذا الترتيب:
-
com.android.settings.bg.argb
البيانات الوصفية من تطبيق الحقن. -
com.android.settings.bg.hint
البيانات الوصفية من تطبيق الحقن. -
top_level_injected_default_background
محدد فيres/values/colors.xml
.
لتجاهل بيانات التطبيق التي يتم حقنها واستخدام الخلفية الافتراضية دائمًا، قم بتعيين config_top_level_injection_background_always_use_default
على true
.