In Jetpack Compose Glimmer, il componente Icon è un elemento UI per
il rendering di icone monocolore. Le icone gestiscono in modo intelligente la colorazione e il ridimensionamento in modo che rimangano leggibili e visivamente coerenti con il GlimmerTheme.
Dimensioni
Anche se le icone hanno come impostazione predefinita le dimensioni fornite da LocalIconSize, puoi anche
utilizzare le tre dimensioni delle icone fornite per impostare una dimensione specifica. Queste dimensioni vengono utilizzate per impostazione predefinita anche per i seguenti contesti:
| Token di dimensione | Utilizzo predefinito |
|---|---|
|
Per elementi di elenchi standard o piccoli chip. |
|
Per icone autonome e chip dei titoli. |
|
Per i componenti con enfasi elevata, come le schede. |
Origini delle icone
Le icone possono accettare ImageVector, ImageBitmap o Painter come
fonte. Quando definisci le tue icone, utilizza ImageVector ove possibile per
promuovere un rendering nitido a qualsiasi scala sugli occhiali con display.
Colore e colorazione
- Tonalità automatica: l'icona risolve il suo colore in base al
LocalContentColorfornito dalla superficie principaleLocalContentColorfornito dalla superficie principale, ad esempio unsurfaceo unButton. - Colorazione manuale: utilizza il parametro
tintper applicare un colore specifico. - Asset multicolore: per le icone che non devono essere colorate (come i loghi dei brand multicolore), imposta
tint = Color.Unspecified. - Immagini generiche: per fotografie o immagini generiche che non rispettano le regole di ridimensionamento e colorazione delle icone, utilizza invece l'
androidx.compose.foundation.Imagestandard.
Esempio: icona di base all'interno di una superficie
Il seguente codice crea un'icona posizionata all'interno di una superficie circolare, utilizzando il colore principale del tema:
@Composable fun IconSampleUsage() { GlimmerLazyColumn( modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, ) { item { IconSizesSample() } item { Icon( FavoriteIcon, "Localized description", Modifier.surface( shape = CircleShape, color = GlimmerTheme.colors.primary, border = null, ) .padding(12.dp), ) } } }
Esempio: icone di dimensioni diverse
Il seguente codice mostra le diverse dimensioni delle icone:
@Composable fun IconSizesSample() { val iconSizes = GlimmerTheme.iconSizes Column( verticalArrangement = Arrangement.spacedBy(20.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { Icon(FavoriteIcon, "Localized description", Modifier.size(iconSizes.small)) // medium is also the default size, defining explicitly for clarity Icon(FavoriteIcon, "Localized description", Modifier.size(iconSizes.medium)) Icon(FavoriteIcon, "Localized description", Modifier.size(iconSizes.large)) } }
Punti chiave sul codice
- La dimensione di ogni icona viene personalizzata utilizzando
GlimmerTheme.iconSizescon un modificatore. Per le icone, il valore predefinito èGlimmerTheme.iconSizes.medium. Utilizza queste dimensioni anziché codificare i valori per mantenere la coerenza nell'intera UI. - Fornisce un
contentDescriptionlocalizzato per ogni icona. Fornisci sempre queste descrizioni, a meno che l'icona non sia puramente decorativa.