Circle
Desenha um círculo ou arco perfeito dentro da área disponível, adequado para progresso circular e escalas métricas. O diâmetro assume o menor valor de largura e centro. startAngle e sweepAngle controlam o intervalo de exibição. Quando todo o círculo estiver fechado, o fundo poderá ser preenchido.
Exemplo
function main() {
return (
<Circle
width={120}
height={120}
background="clear"
stroke={$env.accent}
lineWidth={8}
startAngle={-90}
sweepAngle={240}
strokePosition="inside"
/>
);
}
Uso
- Circle usa o menor lado e centraliza: 160×100 produz diâmetro 100. startAngle/sweepAngle mudam o contorno; transform altera o resultado inteiro.
- Â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.
- Ellipse e Arc usam toda a largura e altura; valores iguais dão círculo. Arcos parciais ficam abertos, sem ligar ao centro. background só preenche uma volta completa fechada.
Propriedades
startAngle?numberÂngulo inicial em graus, normalizado módulo 360 na amostragem.
0sweepAngle?numberVarredura em graus, limitada a -360…360 na amostragem. Valores positivos seguem o sentido horário; wrap não é compatível.
360background?PaintPreenchimento de um círculo ou elipse completos e fechados. Ignorado em arcos parciais.
HDR($env.dark ? "white" : "black")stroke?PaintCor ou gradiente do traço; clear o oculta.
"clear"lineWidth?numberEspessura do traço em pontos; 0 não desenha traço.
2strokePosition?"inside" | "center" | "outside"Posição do traço em relação ao contorno completo do círculo ou da elipse. Padrão: inside.
"inside"lineCap?"round" | "butt" | "square"Ponta da linha: butt corta, square estende em quadrado, round arredonda.
"round"dash?number[]Comprimentos alternados de traço e espaço em pontos; matriz vazia faz linha contínua.
[]dashPhase?numberDeslocamento do padrão tracejado em pontos.
0Propriedades comuns
width?number | "auto" | "fill"Largura em pontos, tamanho automático ou preenchimento do contêiner.
"fill"height?number | "auto" | "fill"Altura em pontos, tamanho automático ou preenchimento do contêiner.
"fill"x?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}opacity?numberOpacidade de todo o View: 0 transparente, 1 opaco.
1clipped?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?CircleAnimation[]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 (
<ZStack width={140} height={140}>
<Circle
width="fill"
height="fill"
background="clear"
stroke="#88888833"
lineWidth={10}
/>
<Circle
width="fill"
height="fill"
background="clear"
stroke={$env.accent}
lineWidth={10}
startAngle={-90}
sweepAngle={270}
lineCap="round"
/>
<Text fontSize={36}>75%</Text>
</ZStack>
);
}
Animação
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYdashPhasestrokelineWidthstartAnglesweepAngletransform.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 |
|---|---|
startAngle | 0 |
sweepAngle | 360 |
lineWidth | 2 |
strokePosition | "inside" |
background | HDR($env.dark ? 'white' : 'black') |