RadialLayout
Distribua escalas, números ou símbolos em torno de um círculo. radius controla a distância do centro ao centro do layout de View, e startAngle e sweepAngle controlam o intervalo de distribuição.
Exemplo
function main() {
return (
<RadialLayout
radius={70}
startAngle={-90}
sweepAngle={270}
includeEnd={true}
>
{[0, 60, 120, 180].map((value) => (
<Text key={value}>{value}</Text>
))}
</RadialLayout>
);
}
Uso
- Os raios posicionam centros dos filhos, não bordas externas. includeEnd=false divide em n partes, true em n−1. No círculo completo as pontas coincidem. childRotation define a orientação.
- Ângulos em graus: 0 à direita, 90 abaixo, sweep positivo horário. startAngle módulo 360; sweepAngle limitado a −360…360. Zero não desenha, ±360 fecha. wrap:360 só em startAngle.
- Use IDs estáveis em key para preservar identidade e animações. Índices não são identidades permanentes adequadas quando a ordem dos itens muda.
Propriedades
children?ViewContentConteúdo de desenho filho.
radius?numberRaio em pontos: radius vale para ambos os eixos; radiusX/radiusY substituem cada um. Negativos viram 0.
80radiusX?numberRaio em pontos: radius vale para ambos os eixos; radiusX/radiusY substituem cada um. Negativos viram 0.
80radiusY?numberRaio em pontos: radius vale para ambos os eixos; radiusX/radiusY substituem cada um. Negativos viram 0.
80startAngle?numberÂngulo inicial em graus, normalizado módulo 360 na amostragem.
-90sweepAngle?numberVarredura em graus, limitada a -360…360 na amostragem. Valores positivos seguem o sentido horário; wrap não é compatível.
360includeEnd?booleanInclui o ângulo final na distribuição. No círculo completo, false evita sobreposição das pontas.
falsechildRotation?"none" | "radial" | "tangent"none mantém a orientação; radial segue o raio; tangent adiciona 90 graus.
"none"Propriedades comuns
width?number | "auto" | "fill"Largura em pontos, tamanho automático ou preenchimento do contêiner.
100height?number | "auto" | "fill"Altura em pontos, tamanho automático ou preenchimento do contêiner.
80padding?numberEspaçamento interno do conteúdo em pontos.
0x?numberDeslocamento visual em pontos: x à direita, y para baixo; não muda o espaço no layout.
0y?numberDeslocamento visual em pontos: x à direita, y para baixo; não muda o espaço no layout.
0transform?ViewTransformTransforma o View inteiro sem mudar o layout. Translação em pontos, rotação/inclinação em graus, escala 1 sem mudança, âncoras 0–1.
{rotation: 0}background?PaintCor ou gradiente de fundo; clear é transparente.
"clear"opacity?numberOpacidade de todo o View: 0 transparente, 1 opaco.
1cornerRadius?numberRaio dos cantos em pontos.
0clipped?booleanRecorta o desenho que ultrapassa os limites do View.
falseclip?"rectangle" | "ellipse"Recorte rectangle ou ellipse; Material também aceita false para desativar.
"rectangle"mask?View | nullView de máscara alfa. Centralizada sem afetar o layout; null desativa a máscara.
<Circle width="fill" height="fill" background="white"/>zIndex?numberOrdem entre elementos irmãos; valores maiores ficam na frente.
0blur?numberRaio do desfoque em pontos; 0 desativa.
4innerShadow?DrawingEffectCor, opacidade, raio de desfoque e deslocamento x/y do efeito; distâncias em pontos.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectCor, opacidade, raio de desfoque e deslocamento x/y do efeito; distâncias em pontos.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorCor da sombra externa.
HDR("black")shadowOpacity?numberOpacidade da sombra entre 0 e 1; 0 oculta.
0shadowRadius?numberRaio de desfoque da sombra externa em pontos.
4shadowX?numberDeslocamento da sombra em pontos: x à direita, y para baixo.
0shadowY?numberDeslocamento da sombra em pontos: x à direita, y para baixo.
2animations?RadialLayoutAnimation[]Anima mudanças de propriedade. duration/delay em segundos; from/to são extremos; repeat/autoreverse controlam repetição e wrap o período.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberIdentidade estável entre elementos irmãos.
Exemplo prático
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>
);
}
Animação
widthheightpaddingxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYradiusradiusXradiusYstartAnglesweepAngletransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYQuando omitido
A tabela apresenta omissões verificadas na implementação. Exemplos não são padrões. Para resultado fixo, passe valor explícito; dimensões e cores de contexto não são constantes.
| Propriedades | Quando omitido |
|---|---|
radius | 80 |
startAngle | -90 |
sweepAngle | 360 |
includeEnd | false |
childRotation | "none" |