Выкройки и компоненты

В 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/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), написанным для каждого компонента, для получения более подробной информации.

Настройка

  • Поведение делителя. Чтобы изменить способ рисования разделителя, обновите стиль разделителей «Настройки» и измените следующие значения:
    • разрешитьДивидидерАбове
    • РазрешитьДивидернидо
    • РазрешитьДивидерАфтерластитем
  • Цвет темы ActionBar. Действия должны использовать Theme.DeviceDefault.Settings в качестве темы или создать собственную тему, используя Theme.DeviceDefault.Settings в качестве родительской.
  • Виджет заголовка приложения. Используйте установщики в AppHeaderController для настройки каждого поля и вызывайте build() после установки всех полей.
  • Кнопка «Развернуть»:
    • Чтобы полностью отключить эту функциональность, переопределите конструктор ProgressiveDisclosureMixin и установите для параметра KeepExpanded значение true.
    • Чтобы настроить количество элементов, отображаемых изначально, вызовите метод ProgressiveDisclosureMixin.setTileLimit() во время метода onAttach(Context) фрагмента.