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

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

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

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

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

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

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

  • رفتار تقسیم‌کننده
    • تمام صفحات در تنظیمات برای استفاده از رفتار جدید جداکننده اصلاح می‌شوند.
    • رفتار جداکننده به صورت ThemeOverlay در موارد زیر تعریف شده است:
      packages/apps/Settings/res/values/styles_preference.xml
  • تغییر تم اکشن بار
    • تمام صفحات در تنظیمات برای استفاده از تم جدید 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 وجود دارد که هر کدام یک picker برای intent متفاوت پیاده‌سازی می‌کنند.
  • ترجیح سبک 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 به عنوان والد، یک تم سفارشی ایجاد کنند.
  • ویجت هدر برنامه. از setterها در AppHeaderController برای سفارشی‌سازی هر فیلد استفاده کنید و پس از تنظیم همه فیلدها build() را فراخوانی کنید.
  • دکمه گسترش:
    • برای غیرفعال کردن کامل این قابلیت، سازنده‌ی ProgressiveDisclosureMixin را بازنویسی کنید و keepExpanded را روی true تنظیم کنید.
    • برای سفارشی‌سازی تعداد آیتم‌هایی که در ابتدا نمایش داده شوند، متد ProgressiveDisclosureMixin.setTileLimit() را در حین متد onAttach(Context) قطعه فراخوانی کنید.