سفارشی سازی دو جداره

اندروید 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 تنظیم کنید.