В Android 8.0 меню "Настройки" получило несколько компонентов и виджетов, которые охватывают распространенные случаи использования. Производителям устройств и разработчикам рекомендуется использовать общие компоненты при расширении приложения "Настройки", чтобы новые пользовательские интерфейсы оставались согласованными с существующим пользовательским интерфейсом приложения "Настройки".
Вот краткий обзор улучшений:
- Изменено поведение разделителя в фреймворке Preference библиотеки поддержки. Разделитель теперь рисуется между категориями.
- Изменение темы ActionBar. В ActionBar теперь используется светлая цветовая тема с текстом акцентного цвета.
- Новый интерфейс настроек. Место для значков остается, даже если у параметра нет значка.
Новые виджеты:
- Виджет заголовка для сведений о приложении. Показывает значок приложения, его название и другую информацию.
- Кнопка "Развернуть" на некоторых страницах. Страница может быть свернута, а менее важные элементы скрыты, пока пользователь не нажмет кнопку развертывания.
- Интерфейс выбора приложения по умолчанию:
- Интерфейс для выбора браузера по умолчанию, приложения "Телефон" по умолчанию и т. д.
- Раньше это было диалоговое окно, а теперь – полноэкранный интерфейс с переключателями.
- Предпочтение стиля "Главный переключатель". Это предпочтение с двумя целевыми страницами. Левая цель ведет к фрагменту или намерению. Правый целевой элемент – это переключатель, который включает или отключает функцию на всей странице.
Примеры и источник
- Поведение разделителя
- На всех страницах настроек теперь используются новые разделители.
- Поведение разделителя определяется как 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
- Код находится по адресу:
Реализация
Производители устройств могут сразу использовать все новые компоненты. Если производитель оборудования решит реализовать новый переключатель MasterSwitch или средство выбора приложений по умолчанию, ему следует следовать примерам в этом документе и справочных файлах (Javadoc), написанных для каждого компонента.
Как настроить меню настроек
- Поведение разделителя. Чтобы изменить способ отрисовки разделителя, обновите стиль для разделителей настроек и измените значение для следующих элементов:
allowDividerAboveallowDividerBelowallowDividerAfterLastItem
- Цвет темы ActionBar. В действиях должна использоваться тема
Theme.DeviceDefault.Settingsили пользовательская тема, родительской для которой являетсяTheme.DeviceDefault.Settings. - Виджет в заголовке приложения. Используйте методы установки в AppHeaderController, чтобы настроить каждое поле, а затем вызовите
build(). - Кнопка "Развернуть":
- Чтобы полностью отключить эту функцию, переопределите конструктор для ProgressiveDisclosureMixin и задайте для keepExpanded значение true.
- Чтобы настроить количество элементов, которые будут показываться изначально, вызовите метод
ProgressiveDisclosureMixin.setTileLimit()во время методаonAttach(Context)фрагмента.