In Jetpack Compose Glimmer, le superfici utilizzano le forme per definire i propri confini visivi e la rotondità. La classe Shapes fornisce diversi livelli di
arrotondamento destinati a vari tipi di componenti.
Categorie di forme
La classe GlimmerTheme definisce tre dimensioni standard per le forme:
- Piccolo: una forma con quattro angoli delle stesse dimensioni. Viene utilizzato per componenti
come le schede. Per impostazione predefinita, questo è un
RoundedCornerShapedi 24 dp. - Media: una forma con quattro angoli della stessa dimensione, compresa tra piccola e
grande. Questa è la forma di uso comune ed è quella predefinita in
Surface. Per impostazione predefinita, questo valore è un
RoundedCornerShapedi 36 dp. - Grande: una forma con quattro angoli completamente arrotondati. Questa forma viene utilizzata per
componenti come i pulsanti. Per impostazione predefinita, si tratta di un
CircleShape.
Esempio: recuperare forme da GlimmerTheme e applicarle ai componenti
Per prima cosa, recupera le forme definite da 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) } } }
Successivamente, puoi applicare queste forme ad alcuni componenti:
@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) } }
Personalizzare le forme
La classe Shapes è @Immutable. Puoi creare una copia delle forme del tema esistente
e sostituire valori specifici utilizzando la funzione di copia. In questo modo, la struttura del tema viene mantenuta
mentre vengono regolati raggi specifici per il brand della tua app.
Esempio: sostituire valori di forme specifici
Il seguente codice esegue l'override di valori di forme specifici:
val customShapes = GlimmerTheme.shapes.copy(
small = RoundedCornerShape(12.dp),
medium = RoundedCornerShape(20.dp)
)
Valori predefiniti
Se non diversamente specificato in GlimmerTheme, il sistema utilizza i seguenti valori predefiniti:
| Token | Forma predefinita | Dimensioni o raggio |
|---|---|---|
|
|
24.dp |
|
|
36.dp |
|
|
Completamente arrotondato |