از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
الگوها و اجزاء
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
در اندروید 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/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)
قطعه فراخوانی کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Patterns and components\n\nIn Android 8.0, the Settings menu gains several components and widgets that\ncover common uses. Device manufacturers and developers are encouraged to use the\ncommon components when extending the Settings app so new user interfaces stay\nconsistent with the existing Settings UI.\n\n\nHere is a summary of improvements:\n\n- Divider behavior change in support library Preference framework. Divider is now drawn between categories.\n- ActionBar theme change. The ActionBar now uses light color theme, with accent color text.\n- New preference layout. The space for icons remains even when a preference has no icon.\n\n\nNew widgets:\n\n- A header widget for app details. Displays app icon, app label and other information.\n- An expand button on some pages. Page can start as collapsed and hide less important items until user clicks expand button.\n- Default app picker UI:\n - The UI for choosing default browser, default phone app, etc.\n - Formerly a dialog, now it's a full screen radio button-based UI.\n- A \"MasterSwitch\" style preference. This is a preference with two click targets. Left target leads to a subsetting fragment or intent. Right target is a switch toggle, controlling on/off for the entire page.\n\nExamples and source\n-------------------\n\n- Divider behavior\n - All pages in Settings are modified to use the new divider behavior.\n - The divider behavior is defined as a ThemeOverlay in: \n `packages/apps/Settings/res/values/styles_preference.xml`\n- ActionBar theme change\n - All pages in Settings are modified to use the new ActionBar theme.\n - The theme is defined in Theme.DeviceDefault.Settings\n- New preference layout\n - Many pages in Settings are now using the new preference layout.\n - You can find the code in: \n `packages/apps/Settings/res/values/styles_preference.xml`\n- App header widget\n - Most app information pages in Settings are already implementing the new App header.\n - Examples and code can be found at: \n `packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java`\n- Expand button\n - Examples and code can be found at: \n `packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java`\n\n **Note:** This component must be used together with\n DashboardFragment. (See more details about DashboardFragment in [Updated Information Architecture](/docs/core/settings/info-architecture).)\n- Default app picker\n - You can find the code for base class in: \n `packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java`\n - There are several subclasses of DefaultAppPickerFragment, each implementing a picker for different intent.\n- *MasterSwitch* style preference\n - Code is at: `https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java`\n - An example use case is Wi-Fi primary switch. You can find an example at: `packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java`\n\nImplementation\n--------------\n\n\nDevice manufacturers can start using all of the new components out of the box.\nIf OEMs decide to implement a new \"MasterSwitch\" style preference or default app\npicker, they should follow the examples in this document and the reference files\n(Javadoc) written with each component for more details.\n\nCustomize the settings menu\n---------------------------\n\n- Divider behavior. To change how divider is drawn, update the style for Settings dividers and change the value for the following:\n - `allowDividerAbove`\n - `allowDividerBelow`\n - `allowDividerAfterLastItem`\n- ActionBar theme color. Activities should use `Theme.DeviceDefault.Settings` as their theme, or create a custom theme using `Theme.DeviceDefault.Settings` as parent.\n- App header widget. Use setters in AppHeaderController to customize each field and call `build()` once all fields are set.\n- Expand button:\n - To fully disable the functionality, override the constructor for ProgressiveDisclosureMixin and set keepExpanded to true.\n - To customize how many items to show initially, call the `ProgressiveDisclosureMixin.setTileLimit()` method during fragment's `onAttach(Context)` method."]]