Formas en Jetpack Compose Glimmer

Dispositivos de realidad extendida correspondientes
Esta guía te ayuda a crear experiencias para estos tipos de dispositivos de realidad extendida.
Display Glasses

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.

Figura 1. Un ejemplo de formas grandes, medianas y pequeñas en Jetpack Compose Glimmer.

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 RoundedCornerShape de 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 RoundedCornerShape de 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

small

RoundedCornerShape

24.dp

medium

RoundedCornerShape

36.dp

large

CircleShape

Completamente redondeado