Узоры и компоненты

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