در اندروید ۸.۰، منوی تنظیمات چندین مؤلفه و ویجت به دست میآورد که کاربردهای رایج را پوشش میدهند. به تولیدکنندگان و توسعهدهندگان دستگاه توصیه میشود هنگام گسترش برنامه تنظیمات از مؤلفههای رایج استفاده کنند تا رابطهای کاربری جدید با رابط کاربری تنظیمات موجود سازگار بمانند.
در اینجا خلاصهای از بهبودها آمده است:
- تغییر رفتار جداکننده در چارچوب ترجیحات کتابخانه پشتیبانی. اکنون جداکننده بین دستهها رسم میشود.
- تغییر تم اکشنبار. اکشنبار اکنون از تم رنگ روشن و متن با رنگهای برجسته استفاده میکند.
- طرحبندی جدید تنظیمات. حتی زمانی که یک تنظیمات هیچ آیکونی ندارد، فضای آیکونها باقی میماند.
ویجتهای جدید:
- یک ویجت سربرگ برای جزئیات برنامه. آیکون برنامه، برچسب برنامه و سایر اطلاعات را نمایش میدهد.
- یک دکمه باز کردن در برخی صفحات. صفحه میتواند به صورت جمع شده شروع شود و موارد کماهمیتتر را تا زمانی که کاربر روی دکمه باز کردن کلیک کند، پنهان کند.
- رابط کاربری پیشفرض انتخابگر برنامه:
- رابط کاربری برای انتخاب مرورگر پیشفرض، برنامه پیشفرض تلفن و غیره
- قبلاً یک کادر محاورهای بود، حالا یک رابط کاربری تمام صفحه مبتنی بر دکمههای رادیویی است.
- یک ترجیح به سبک "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)قطعه فراخوانی کنید.