В 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)
фрагмента.