En Jetpack Compose Glimmer, las superficies usan formas para definir sus límites visuales
y su redondez. La clase Shapes proporciona diferentes niveles de
redondez destinados a varios tipos de componentes.
Categorías de formas
La clase GlimmerTheme define tres tamaños de forma estándar:
- Pequeño: Una forma con cuatro esquinas del mismo tamaño. Se usa para componentes como tarjetas. De forma predeterminada, es un
RoundedCornerShapede 24.dp. - Mediano: Una forma con cuatro esquinas del mismo tamaño entre pequeñas y
grandes. Esta es la forma de uso frecuente y es la predeterminada en la superficie. De forma predeterminada, es un
RoundedCornerShapede 36.dp. - Grande: Una forma con cuatro esquinas completamente redondeadas. Esta forma se usa para componentes como botones. De forma predeterminada, es un
CircleShape.
Ejemplo: Obtén formas de GlimmerTheme y aplícalas a los componentes
Primero, obtén las formas definidas de GlimmerTheme.shapes:
@Composable fun ShapesSample() { val shapes = GlimmerTheme.shapes GlimmerLazyColumn { item { ShapeItem("small", shape = shapes.small) } item { ShapeItem("medium", shape = shapes.medium) } item { ShapeItem("large", shape = shapes.large) } } }
Luego, puedes aplicar estas formas a algunos componentes:
@Composable private fun ShapeItem(name: String, shape: Shape, modifier: Modifier = Modifier) { Box( modifier.aspectRatio(2.5f).fillMaxWidth().surface(shape = shape), contentAlignment = Alignment.Center, ) { Text(name) } }
Personaliza formas
La clase Shapes es @Immutable. Puedes crear una copia de las formas del tema existentes y anular valores específicos con la función de copia. Haz esto para mantener la estructura del tema mientras ajustas radios específicos para la marca de tu app.
Ejemplo: Anula valores de forma específicos
El siguiente código anula valores de forma específicos:
val customShapes = GlimmerTheme.shapes.copy(
small = RoundedCornerShape(12.dp),
medium = RoundedCornerShape(20.dp)
)
Valores predeterminados
Si no se especifica lo contrario en GlimmerTheme, el sistema usa los siguientes valores predeterminados:
| Token | Forma predeterminada | Tamaño o radio |
|---|---|---|
|
|
24.dp |
|
|
36.dp |
|
|
Completamente redondeado |