В Android 8.0 меню «Настройки» получило несколько компонентов и виджетов, охватывающих распространённые функции. Производителям и разработчикам устройств рекомендуется использовать эти компоненты при расширении приложения «Настройки», чтобы новые пользовательские интерфейсы соответствовали существующему пользовательскому интерфейсу.
Вот краткий обзор улучшений:
- Изменено поведение разделителя в библиотеке поддержки Preference Framework. Разделитель теперь отображается между категориями.
- Изменение темы 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)
фрагмента.