В Android 8.0 в меню «Настройки» появилось несколько компонентов и виджетов, предназначенных для частого использования. Производителям и разработчикам устройств рекомендуется использовать общие компоненты при расширении приложения «Настройки», чтобы новые пользовательские интерфейсы оставались совместимыми с существующим пользовательским интерфейсом «Настройки».
Вот краткий обзор улучшений:
- Изменение поведения делителя в библиотеке поддержки Preference framework. Разделитель теперь рисуется между категориями.
- Изменение темы ActionBar. Панель действий теперь использует светлую цветовую тему с акцентным цветным текстом.
- Новый макет предпочтений. Место для значков остается, даже если у параметра нет значка.
Новые виджеты:
- Виджет заголовка для сведений о приложении. Отображает значок приложения, метку приложения и другую информацию.
- Кнопка расширения на некоторых страницах. Страница может начинаться как свернутая и скрывать менее важные элементы, пока пользователь не нажмет кнопку «Развернуть».
- Интерфейс выбора приложений по умолчанию:
- Пользовательский интерфейс для выбора браузера по умолчанию, приложения для телефона по умолчанию и т. д.
- Раньше это был диалог, теперь это полноэкранный пользовательский интерфейс на основе переключателей.
- Предпочтение стиля «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, каждый из которых реализует средство выбора для разных целей.
- Вы можете найти код для базового класса в:
- Предпочтение стиля MasterSwitch
- Код находится по адресу:
packages/apps/Settings/src/com/android/settings/widget/MasterSwitchPreference.java
- Примером использования является главный коммутатор Wi-Fi. Вы можете найти пример по адресу:
packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java
- Код находится по адресу:
Реализация
Производители устройств могут начать использовать все новые компоненты «из коробки». Если OEM-производители решат внедрить новое предпочтение стиля «MasterSwitch» или средство выбора приложений по умолчанию, они должны следовать примерам в этом документе и справочным файлам (Javadoc), написанным для каждого компонента, для получения дополнительных сведений.
Настройка
- Поведение разделителя. Чтобы изменить способ рисования разделителя, обновите стиль для разделителей настроек и измените значение для следующего:
- allowDividerAbove
- allowDividerBelow
- разрешитьDividerAfterLastItem
- Цвет темы ActionBar. Действия должны использовать
Theme.DeviceDefault.Settings
в качестве своей темы или создать пользовательскую тему, используяTheme.DeviceDefault.Settings
в качестве родительской. - Виджет заголовка приложения. Используйте сеттеры в AppHeaderController для настройки каждого поля и вызовите build() после того, как все поля будут установлены.
- Кнопка «Развернуть»:
- Чтобы полностью отключить эту функцию, переопределите конструктор ProgressiveDisclosureMixin и установите для параметра keepExpanded значение true.
- Чтобы настроить количество отображаемых элементов, вызовите метод
ProgressiveDisclosureMixin.setTileLimit()
во время методаonAttach(Context)
фрагмента.