A API Style é um novo paradigma para personalizar ou "estilizar" elementos e componentes no Jetpack Compose, o que tradicionalmente era feito usando modificadores. Ela foi projetada para permitir uma personalização mais fácil e profunda.
A API Styles melhora a flexibilidade em todos os formatos, oferece melhor desempenho e permite a criação de sistemas de design personalizados mais fáceis. Mesmo que você não precise de componentes personalizados, a API Styles tem muitos benefícios para seu sistema de design.
Uma distinção importante é que os estilos não substituem os modificadores, mas atuam como substitutos de parâmetros de estilo, como preenchimento e cores. Recomendamos a transição para o uso de estilos em vez de parâmetros para aumentar a flexibilidade e o desempenho.
Benefícios dos estilos
- Simplifica a estilização baseada em estado:a API oferece uma maneira mais concisa e declarativa de definir estilos que mudam com base em diferentes estados (por exemplo, ao passar o cursor, focar, pressionar), reduzindo significativamente o código boilerplate em comparação com o sistema de modificadores.
- Melhora as transições de estado animadas:a API Style permite a animação integrada de propriedades de estilo entre estados com características de desempenho ideais, evitando recomposições que ocorrem com a abordagem
animateColorAsStateatual. - Simplifica as APIs de componentes:ao introduzir um único parâmetro de estilo para personalização, as APIs de componentes são simplificadas drasticamente e oferecem maior flexibilidade.
- Menos recomposições que levam a um melhor desempenho em relação aos modificadores:os estilos são executados nas fases de desenho e layout do Compose, ignorando a fase de composição.
- Conjunto mais padronizado de APIs:um conjunto padrão de propriedades estilísticas torna qualquer componente estilizado.
Principais conceitos
| Conceito | Descrição |
|---|---|
Style |
Uma interface que define a aparência de um elemento da interface, com um conjunto padrão de propriedades estilizadas. É semelhante aos estilos CSS e pode ser personalizado localmente ou por um tema. Os estilos se substituem. Definir uma propriedade duas vezes (por exemplo, background()) resulta em um único valor final. |
StyleScope |
Um escopo de receptor para a função applyStyle() em um estilo. Ele fornece funções para definir propriedades visuais (preenchimento, plano de fundo, borda etc.) e acessar o StyleState atual. |
StyleState |
Fornece um estado (por exemplo, isEnabled, isPressed, isChecked, estados personalizados) que você pode usar em um estilo para definir a estilização condicional. |
Introdução: adicionar dependências
Para usar as APIs no seu projeto, use a versão Alfa mais recente da base do Jetpack Compose. No arquivo settings.gradle.kts, adicione o repositório do Maven de snapshot à lista de repositórios a serem usados.
No arquivo libs.versions.toml ou diretamente no arquivo app/build.gradle.kts, defina a versão do Compose como 1.11.0-alpha06:
compose = "1.11.0-alpha06"
androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime", version.ref = "compose" }
androidx-compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "compose" }
androidx-compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics", version.ref = "compose" }
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "compose" }
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "compose" }
androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest", version.ref = "compose" }
androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4", version.ref = "compose" }
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "compose" }