الگوها و اجزاء

در اندروید 8.0، منوی تنظیمات چندین مؤلفه و ویجت به دست می‌آورد که کاربردهای رایج را پوشش می‌دهد. تولیدکنندگان و توسعه‌دهندگان دستگاه تشویق می‌شوند هنگام گسترش برنامه تنظیمات از اجزای رایج استفاده کنند تا رابط‌های کاربری جدید با رابط کاربری تنظیمات موجود سازگار باشند.

در اینجا خلاصه ای از پیشرفت ها آمده است:

  • تغییر رفتار تقسیم کننده در چارچوب ترجیحی کتابخانه پشتیبانی. اکنون تقسیم کننده بین دسته ها ترسیم شده است.
  • تغییر تم ActionBar اکنون ActionBar از تم رنگی روشن، با متن رنگی برجسته استفاده می‌کند.
  • طرح اولویت جدید. حتی زمانی که یک اولویت فاقد نماد باشد، فضای نمادها باقی می ماند.

ویجت های جدید:

  • ویجت هدر برای جزئیات برنامه. نماد برنامه، برچسب برنامه و سایر اطلاعات را نمایش می دهد.
  • یک دکمه گسترش در برخی از صفحات. صفحه می تواند به صورت جمع شده شروع شود و موارد کمتر مهم را تا زمانی که کاربر روی دکمه گسترش کلیک نکند پنهان کند.
  • رابط کاربری پیش‌فرض انتخابگر برنامه:
    • رابط کاربری برای انتخاب مرورگر پیش‌فرض، برنامه پیش‌فرض تلفن و غیره.
    • قبلاً یک گفتگو بود، اکنون یک رابط کاربری تمام صفحه مبتنی بر دکمه رادیویی است.
  • ترجیح سبک "MasterSwitch". این یک اولویت با دو هدف کلیک است. هدف سمت چپ به یک قطعه یا قصد زیرمجموعه منتهی می شود. هدف سمت راست یک سوئیچ است که روشن/خاموش کردن کل صفحه را کنترل می کند.

مثال ها و منبع

  • رفتار تقسیم کننده
    • همه صفحات در تنظیمات برای استفاده از رفتار تقسیم کننده جدید اصلاح شده اند.
    • رفتار تقسیم کننده به عنوان یک ThemeOverlay در موارد زیر تعریف می شود:
      packages/apps/Settings/res/values/styles_preference.xml
  • تغییر تم ActionBar
    • همه صفحات در تنظیمات برای استفاده از تم جدید ActionBar اصلاح شده‌اند.
    • موضوع در Theme.DeviceDefault.Settings تعریف شده است
  • طرح اولویت جدید
    • بسیاری از صفحات در تنظیمات اکنون از طرح بندی برگزیده جدید استفاده می کنند.
    • شما می توانید کد را در:
      packages/apps/Settings/res/values/styles_preference.xml
  • ویجت هدر برنامه
    • اکثر صفحات اطلاعات برنامه در تنظیمات از قبل هدر برنامه جدید را پیاده سازی می کنند.
    • نمونه ها و کدها را می توان در آدرس زیر یافت:
      packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
  • دکمه بزرگ کردن
    • نمونه ها و کدها را می توان در آدرس زیر یافت:
      packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java

      توجه: این کامپوننت باید همراه با DashboardFragment استفاده شود. (به جزئیات بیشتر در مورد DashboardFragment در معماری اطلاعات به روز مراجعه کنید.)

  • انتخابگر پیش‌فرض برنامه
    • می توانید کد کلاس پایه را در زیر بیابید:
      packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
    • چندین زیر کلاس از DefaultAppPickerFragment وجود دارد که هر کدام یک انتخاب کننده را برای اهداف متفاوت پیاده سازی می کنند.
  • ترجیح سبک MasterSwitch
    • کد در این آدرس است: https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
    • نمونه مورد استفاده سوئیچ اصلی Wi-Fi است. می‌توانید نمونه‌ای را در این آدرس پیدا کنید: packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java

پیاده سازی

سازندگان دستگاه می توانند شروع به استفاده از تمام اجزای جدید خارج از جعبه کنند. اگر OEM ها تصمیم به پیاده سازی ترجیح سبک «MasterSwitch» یا انتخابگر پیش فرض برنامه دارند، باید از مثال های این سند و فایل های مرجع (Javadoc) نوشته شده با هر مؤلفه برای جزئیات بیشتر پیروی کنند.

سفارشی کردن

  • رفتار تقسیم کننده برای تغییر نحوه ترسیم تقسیم‌کننده، سبک تقسیم‌کننده‌های تنظیمات را به‌روزرسانی کنید و مقدار موارد زیر را تغییر دهید:
    • allowDividerAbove
    • allowDividerBelow
    • allowDividerAfterLastItem
  • رنگ تم ActionBar. فعالیت‌ها باید از Theme.DeviceDefault.Settings به‌عنوان موضوع خود استفاده کنند یا با استفاده از Theme.DeviceDefault.Settings به‌عنوان والدین، یک طرح زمینه سفارشی ایجاد کنند.
  • ویجت هدر برنامه از تنظیم کننده ها در AppHeaderController برای سفارشی کردن هر فیلد و فراخوانی build() پس از تنظیم همه فیلدها استفاده کنید.
  • دکمه گسترش:
    • برای غیرفعال کردن کامل عملکرد، سازنده ProgressiveDisclosureMixin را لغو کنید و keepExpanded را روی true تنظیم کنید.
    • برای سفارشی کردن تعداد آیتم هایی که در ابتدا نمایش داده شوند، متد ProgressiveDisclosureMixin.setTileLimit() را در طول متد onAttach(Context) قطعه فراخوانی کنید.