Livro 2 - Projeto da Mini-Calculadora
5. Definindo um tema
5.1. Temas do Material Design
Existem diversos temas para aplicar em seu aplicativo. Cada tema possui suas especificações e deve ser consultada a sua documentação. No caso dos temas do Material Design você pode conferir as informações em:
Nos temas do Material Design são aplicadas 12 cores para criar a paleta do aplicativo. Cada cor possui um termo para identificar o seu propósito, cor primária por exemplo, e também possui valores padrões para os tons claro e escuro.
Atributos de cores para o tema claro

Atributos de cores para o tema escuro

As cores do tema são aplicadas aos componentes de design. No caso de um botão, as seguintes características refletem no seu visual

Propriedades e cores
Cada propriedade de cor pode refletir em diferentes componentes visuais do aplicativo. Para aprender a criar seus temas, conheça qual a finalidade de cada propriedade:
- colorPrimary e colorSecondary representam as cores da sua marca
- colorPrimaryVariant e colorSecondaryVariantsão versões mais claras ou escuras da sua marca
- colorSurface é aplicada sobre "superfícies" como cartões e abas
- android:colorBackground é a cor de fundo da janela do seu aplicativo
- colorError é empregada para mensagens de erro ou avisos
- As várias cores on (colors (colorOnPrimary, colorOnSecondary, colorOnSurface, etc.) são são usados para tingir o conteúdo em primeiro plano (como texto e ícones) exibido sobre as outras cores. Elas precisam atender aos requisitos de acessibilidade e ter contraste suficiente em relação às cores em que são exibidos.
Recomendações
Ao criar seu tema considere os seguintes aspectos:
- Você deve sempre substituir colorPrimary, colorSecondary e suas variantes, a menos que sua marca seja parecidas com os valores padrões roxo/verde-azulado
- Você não precisa substituir todas as cores. Alguns, como colorSurface, usam cores neutras, portanto, confiar nos valores padrão é perfeitamente aceitável.
- Caso sua marca não defina nenhum tipo de cor secundária ou de destaque, não há problema em usar uma única cor tanto para colorPrimary quanto para colorSecondary. O mesmo pode ser dito das variantes (por exemplo, colorPrimary e colorPrimaryVariant podem ser iguais).
- Apesar de serem atributos separados, existe uma ligação inerente entre uma cor, sua variante (se existir) e sua cor “On” (por exemplo, colorPrimary, colorPrimaryVariant e colorOnPrimary). Substituir um significa que você precisa verificar os outros para ver se fazem sentido e atendem aos requisitos de acessibilidade.