En Jetpack Compose Glimmer, el Icon componente es un elemento de la IU para
renderizar íconos de un solo color. Los íconos controlan de forma inteligente el sombreado y el escalamiento para que sigan siendo legibles y visualmente coherentes con el
GlimmerTheme.
Tamaños
Si bien los íconos usan de forma predeterminada el tamaño que proporciona LocalIconSize, también puedes
usar los tres tamaños de íconos proporcionados para establecer un tamaño específico. Estos tamaños también se usan de forma predeterminada para los siguientes contextos:
| Token de tamaño | Uso predeterminado |
|---|---|
|
Para elementos de lista estándar o chips pequeños |
|
Para íconos independientes y chips de título |
|
Para componentes de gran énfasis, como tarjetas |
Fuentes de íconos
Los íconos pueden aceptar ImageVector, ImageBitmap o Painter como
fuente. Cuando definas tus propios íconos, usa ImageVector siempre que sea posible para promover la renderización nítida en cualquier escala en los lentes de visualización.
Color y sombreado
- Sombreado automático: El ícono resuelve su color en función del
LocalContentColorque proporciona la superficie superiorLocalContentColorque proporciona la superficie superior, como unsurfaceoButton. - Sombreado manual: Usa el parámetro
tintpara aplicar un color específico. - Elementos multicolores: Para los íconos que no deben estar sombreados (como
los logotipos de marcas multicolores), establece
tint = Color.Unspecified. - Imágenes genéricas: Para fotografías o imágenes genéricas que no siguen las reglas de tamaño y sombreado de íconos, usa el
androidx.compose.foundation.Imageestándar.
Ejemplo: Ícono básico dentro de una superficie
El siguiente código crea un ícono colocado dentro de una superficie circular, utilizando el color primario 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), ) } } }
Ejemplo: Íconos con diferentes tamaños
En el siguiente código, se muestran los diferentes tamaños de íconos:
@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)) } }
Puntos clave sobre el código
- El tamaño de cada ícono se personaliza con
GlimmerTheme.iconSizescon un modificador. Para los íconos, el valor predeterminado esGlimmerTheme.iconSizes.medium. Usa estos tamaños en lugar de codificar valores de forma rígida para mantener la coherencia en toda la IU. - Proporciona un
contentDescriptionlocalizado para cada ícono. Siempre proporciona estas descripciones, a menos que el ícono sea puramente decorativo.