Connect with us

Дизайн и прототипирование

Основы цветовой системы Material3 для Android-разработчиков

Реализация цветовой системы Material3 может показаться пугающей, но, используя компоненты Material Theme Builder и Material3 Compose, вы обнаружите, что тематизация намного проще и понятнее, чем без их использования.

Опубликовано

/

     
     

Material3 — это последняя итерация Material Design, с динамическим тематическим оформлением, обновленными компонентами и многим другим. Однако сам этот фреймворк может быть слишком подавляющим с его более чем 200 различными цветовыми вариантами и десятками страниц документации.

Хорошо, что на самом деле все не так сложно, и он может значительно облегчить жизнь разработчикам. И под облегчением я подразумеваю следующее:

  • Автоматическая тематизация всех Material3 компонентов
  • Темные и светлые цветовые схемы
  • Правильные цвета для различных состояний компонентов, о которых вы никогда не задумывались, например при «наведении»
  • Правильные контрасты между цветами для доступности и UX
  • Более чистая кодовая база!

И многое другое. В этой статье я расскажу, как работает система цветов Material3 и почему вы должны внедрить ее в свой Android-проект.

Понимание цветовых ролей Material3

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

Цветовая схема Material3 состоит из трех высокоуровневых «цветовых ролей»: Primary, Secondary и Tertiary. Эти цвета применяются к компонентам в зависимости от их важности: FAB или кнопка «Вход» будут использовать основной цвет.

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

Основы цветовой системы Material3 для Android-разработчиков

Диаграмма цветовых ролей

Вариации, например «On Primary», имеют правила применения: если ваша кнопка «Войти» использует основной цвет, то для текста на ней будет использоваться «On Primary». Соблюдение этих правил гарантирует, что ваше приложение будет читабельным и доступным.

Основы цветовой системы Material3 для Android-разработчиков

Кнопка с фоном «Primary» и текстом «On Primary»

Почему это важно знать? Каждый компонент и каждое состояние имеют свои цвета, как описано в документации Material3. Простая кнопка имеет 7 состояний, каждое из которых имеет различные цвета. Вам не нужно беспокоиться о том, чтобы запомнить каждый из них!

Основы цветовой системы Material3 для Android-разработчиков

Различные состояния и характеристики заполненной кнопки

Создание темы

Итак, как же объявить эти +200 цветов? Хорошая новость заключается в том, что это происходит практически автоматически. Вы точно не нужно создавать цветовую схему с нуля.

Есть два варианта: использовать плагин Material Theme Builder Figma или использовать онлайн Material Theme Builder.

Основы цветовой системы Material3 для Android-разработчиков

Цвета, создаваемые конструктором Material Theme Builder

Оба конструктора работают одинаково:

  1. Выберите исходный цвет, и все остальные цвета будут автоматически выведены из него
  2. Экспортируйте сгенерированные .kt файлы
  3. Поместите файлы в пакет ui.theme в вашем проекте Compose
  4. Переименуйте AppTheme, если хотите

Вот и все! Теперь у вас есть полная кастомная система цветов Material3, примененная в вашем проекте.

Но как она работает?

За кулисами

Файл Theme.kt, который вы экспортировали, содержит следующий фрагмент кода:

Здесь предопределенная colorScheme применяется к композиту MaterialTheme. Когда вы оборачиваете композабл элементы в свою тему, эти составные элементы получают доступ к colorScheme. Например, так можно применить тематизацию к @Previews.

В приведенном выше фрагменте кода AppTheme передает определенный colorScheme кнопке через CompositionLocal. В результате получается полностью тематическая кнопка, поддерживающая режимы Light и Dark, без явного определения цветов.

Обратите внимание, что как фон, так и цвет текста отличаются.

Основы цветовой системы Material3 для Android-разработчиков

Если вы посмотрите на исходный текст Material3 кнопки, то увидите, что по умолчанию для цветов используется значение ButtonDefaults.buttonColors(). Функция buttonColors() получает эти цвета из вашей MaterialTheme:

Где применяются цвета?

Как вы уже догадались, цвета применяются ко всем компонентам Material3 и их состояниям, от простой Button до сложного TimePicker.

Темы

Как видно из приведенного выше, вы получите цвета как для темной, так и для светлой темы.

Таким образом, следующий фрагмент кода приводит к созданию полностью тематического компонента TimePicker, как для темной, так и для светлой темы.

В результате получаются следующие превью:

Основы цветовой системы Material3 для Android-разработчиков

TimePicker в светлой и темной темах

Состояния

А различные состояния? Да, цвета также автоматически применяются в зависимости от состояния.

Основы цветовой системы Material3 для Android-разработчиков

Включенная и выключенная кнопка

Как видно из приведенного ниже фрагмента кода, изменение цвета фона кнопки и ее надписи напрямую зависит от свойства кнопки enabled:

Резюме

Реализация цветовой системы Material3 может показаться пугающей, но, используя компоненты Material Theme Builder и Material3 Compose, вы обнаружите, что тематизация намного проще и понятнее, чем без их использования.

И, как любят все разработчики, в итоге вы получите чистую кодовую базу и изысканную цветовую схему во всем приложении.

Ссылки

Если вы хотите узнать больше, вот несколько полезных ссылок:

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: