Шаблоны и компоненты

В 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), написанных для каждого компонента.

Как настроить меню настроек

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