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

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