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

Дизайн 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"
}

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

Рекомендации по интеграции динамических цветов см. в разделе «Интеграция разработанных вами материалов» .

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

Что включает в себя 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 .