RadialLayout
Distribuisci scale, numeri o simboli attorno a un cerchio. radius controlla la distanza dal centro al centro del layout di View e startAngle e sweepAngle controllano l'intervallo di distribuzione.
Esempio
function main() {
return (
<RadialLayout
radius={70}
startAngle={-90}
sweepAngle={270}
includeEnd={true}
>
{[0, 60, 120, 180].map((value) => (
<Text key={value}>{value}</Text>
))}
</RadialLayout>
);
}
Utilizzo
- I raggi posizionano i centri dei figli, non i bordi esterni. includeEnd=false divide in n parti, true in n−1. Sul giro completo gli estremi coincidono. childRotation regola l’orientamento.
- Angoli in gradi: 0 destra, 90 basso, sweep positivo orario. startAngle modulo 360, sweepAngle limitato a −360…360. Zero non disegna, ±360 chiude. wrap:360 solo per startAngle.
- Usa ID stabili come key per preservare identità e animazioni. L’indice non è un’identità permanente adatta quando cambia l’ordine degli elementi.
Proprietà
children?ViewContentContenuto di disegno figlio.
radius?numberRaggio in punti: radius per entrambi gli assi, radiusX/radiusY per ciascuno. Valori negativi diventano 0.
80radiusX?numberRaggio in punti: radius per entrambi gli assi, radiusX/radiusY per ciascuno. Valori negativi diventano 0.
80radiusY?numberRaggio in punti: radius per entrambi gli assi, radiusX/radiusY per ciascuno. Valori negativi diventano 0.
80startAngle?numberAngolo iniziale in gradi, normalizzato modulo 360 durante il campionamento.
-90sweepAngle?numberAmpiezza in gradi, limitata a -360…360 durante il campionamento. I valori positivi seguono il senso orario; wrap non è supportato.
360includeEnd?booleanInclude l’estremità dell’arco nella distribuzione. Nel cerchio completo false evita sovrapposizioni iniziali/finali.
falsechildRotation?"none" | "radial" | "tangent"none conserva l’orientamento, radial segue il raggio, tangent aggiunge 90 gradi.
"none"Proprietà comuni
width?number | "auto" | "fill"Larghezza in punti, dimensione automatica o riempimento del contenitore.
100height?number | "auto" | "fill"Altezza in punti, dimensione automatica o riempimento del contenitore.
80padding?numberSpaziatura interna del contenuto in punti.
0x?numberSpostamento visivo in punti: x a destra, y in basso; non cambia lo spazio nel layout.
0y?numberSpostamento visivo in punti: x a destra, y in basso; non cambia lo spazio nel layout.
0transform?ViewTransformTrasformazione globale senza cambiare il layout. Traslazione in punti, rotazione/inclinazione in gradi, scala 1 invariata, ancoraggi 0–1.
{rotation: 0}background?PaintColore o gradiente di sfondo; clear è trasparente.
"clear"opacity?numberOpacità dell’intero View: 0 trasparente, 1 opaco.
1cornerRadius?numberRaggio degli angoli in punti.
0clipped?booleanRitaglia il disegno oltre i limiti del View.
falseclip?"rectangle" | "ellipse"Forma di ritaglio rectangle o ellipse; Material accetta anche false per disattivarlo.
"rectangle"mask?View | nullView per la maschera alfa. Centrata senza modificare il layout; null disattiva la maschera.
<Circle width="fill" height="fill" background="white"/>zIndex?numberOrdine tra elementi fratelli; valori più grandi appaiono davanti.
0blur?numberRaggio della sfocatura in punti; 0 la disattiva.
4innerShadow?DrawingEffectColore, opacità, raggio di sfocatura e offset x/y dell’effetto; distanze in punti.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectColore, opacità, raggio di sfocatura e offset x/y dell’effetto; distanze in punti.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorColore dell’ombra esterna.
HDR("black")shadowOpacity?numberOpacità dell’ombra 0–1; 0 la nasconde.
0shadowRadius?numberRaggio di sfocatura dell’ombra esterna in punti.
4shadowX?numberOffset dell’ombra in punti: x a destra, y in basso.
0shadowY?numberOffset dell’ombra in punti: x a destra, y in basso.
2animations?RadialLayoutAnimation[]Anima le modifiche alle proprietà. duration/delay in secondi; from/to sono estremi; repeat/autoreverse controllano le ripetizioni, wrap il periodo.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberIdentità stabile tra elementi fratelli.
Esempio pratico
function main() {
return (
<RadialLayout
width={200}
height={200}
radius={76}
startAngle={-135}
sweepAngle={270}
includeEnd={true}
>
{[0, 50, 100, 150, 200].map((value) => (
<Text key={value} fontSize={14}>
{value}
</Text>
))}
</RadialLayout>
);
}
Animazione
widthheightpaddingxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYradiusradiusXradiusYstartAnglesweepAngletransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYQuando omesso
La tabella documenta omissioni verificate nell’implementazione. Gli esempi non sono valori predefiniti. Specifica valori per risultati fissi; misure e colori contestuali non sono costanti.
| Proprietà | Quando omesso |
|---|---|
radius | 80 |
startAngle | -90 |
sweepAngle | 360 |
includeEnd | false |
childRotation | "none" |