Динамическая цветовая тема

Дизайн Material You был представлен в Android 12 и расширен в Android 13.

На этой странице рассказывается об изменениях в логике Material You, которые помогут вам реализовать более широкую поддержку динамических цветов.

Палитры динамических цветов

В Android 12 и более поздних версиях ОС поддерживаются следующие палитры динамических цветов:

Каждая из них состоит из 13 цветов с определенными значениями яркости, как описано в R.color, но с неопределенными значениями тона и цветности, которые могут быть динамически сгенерированы системой Android во время выполнения.

Стили тем для динамической цветовой схемы

В Android 13 поддерживается шесть разных стилей тем с вариантами алгоритма динамического цвета, которые соответствуют требованиям разработчиков и ожиданиям пользователей в отношении контрастности. Они используются для создания 65 динамических цветов, которые применяются в приложениях:

  • TONAL_SPOT – это палитра средней яркости, в которой используется цвет system_accent3_0, аналогичный цвету system_accent1_0 (перенесен из Android 12 с небольшими изменениями).
  • VIBRANT – это палитра с высокой насыщенностью, в которой гармонично сочетаются оттенки.
  • EXPRESSIVE – это палитра с высокой насыщенностью, в которой сочетаются неожиданные и уникальные акцентные цвета.
  • SPRITZ – это палитра с низкой насыщенностью, которая создает мягкий переход между цветами.
  • RAINBOW использует как хроматические акценты, так и нейтральные поверхности, чтобы создать более тонкое цветовое восприятие для пользователей.
    • Не рекомендуется использовать этот метод для извлечения цвета на основе обоев. Вместо этого следует использовать статические цветовые темы.
  • FRUIT_SALAD предлагает двухцветные значки, чтобы пользователи могли лучше выразить себя.
    • Не рекомендуется использовать этот метод для извлечения цвета на основе обоев. Вместо этого следует использовать статические цветовые темы.

Системная тема определяется той же настройкой, что и в Android 12: Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES. Для Android 13 требуется только один ключ в JSON, который отправляет исходный цвет для создания 65 цветовых палитр:

{
    "android.theme.customization.system_palette":"746BC1"
}

По умолчанию используется стиль темы TONAL_SPOT, но вы можете указать другой стиль, добавив в JSON выше дополнительный ключ:

{
    "android.theme.customization.system_palette":"746BC1"
    "android.theme.customization.theme_style":"EXPRESSIVE"
}

Интеграция динамических цветов

Инструкции по интеграции динамических цветов приведены в руководстве по внедрению Material You.

Часто задаваемые вопросы

Что включает API динамической тональной палитры?

  • Всего есть пять тональных палитр:

  • Каждая палитра содержит 13 значений цвета с индексами 0, 10, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900 и 1000.

  • Полученный API представляет собой комбинацию названия тональной палитры, заканчивающейся индексом. Пример: R.color#system_accent1_10

Как создается динамическая палитра тонов?

Динамическая тональная палитра должна быть создана на основе одного исходного цвета, который следует получить из обоев с помощью com.android.systemui.monet.ColorScheme#getSeedColors, предоставляющего несколько действительных исходных цветов. Если ни один из указанных цветов не соответствует требованиям к исходному цвету, для исходного цвета следует использовать значение 0xFF1B6EF3.