الگوها و عناصر

در Android 8.0، منو «تنظیمات» چندین عنصر و ابزارک اضافه می‌کند که کاربردهای رایج را پوشش می‌دهد. تولیدکنندگان دستگاه و توسعه‌دهندگان تشویق می‌شوند هنگام گسترش برنامه «تنظیمات» از عناصر مشترک استفاده کنند تا میاناهای کاربر جدید با میانای کاربر «تنظیمات» موجود سازگار بمانند.

خلاصه‌ای از بهبودها در اینجا آمده است:

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

ابزاره‌های جدید:

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

مثال‌ها و منبع

  • عملکرد تقسیم‌کننده
    • همه صفحه‌های «تنظیمات» اصلاح شده‌اند تا از عملکرد جداکننده جدید استفاده کنند.
    • عملکرد جداکننده به‌عنوان «رونهاد» در این فایل تعریف شده است:
      packages/apps/Settings/res/values/styles_preference.xml
  • تغییر زمینه «نوار کنش»
    • همه صفحه‌های «تنظیمات» اصلاح شده‌اند تا از زمینه جدید «نوار کنش» استفاده کنند.
    • زمینه در 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

پیاده‌سازی

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

سفارشی‌سازی منو تنظیمات

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