RadialLayout
Bagikan skala, angka, atau simbol di sekeliling lingkaran. radius mengontrol jarak dari pusat ke pusat tata letak View, dan startAngle dan sweepAngle mengontrol jangkauan distribusi.
Contoh
function main() {
return (
<RadialLayout
radius={70}
startAngle={-90}
sweepAngle={270}
includeEnd={true}
>
{[0, 60, 120, 180].map((value) => (
<Text key={value}>{value}</Text>
))}
</RadialLayout>
);
}
Penggunaan
- Radius menempatkan pusat anak, bukan tepi luar. includeEnd=false membagi n, true n−1 bagian. Pada lingkaran penuh ujung awal/akhir bertumpuk. childRotation mengatur orientasi.
- Sudut dalam derajat: 0 kanan, 90 bawah, sweep positif searah jarum jam. startAngle modulo 360, sweepAngle dibatasi −360…360. Nol kosong, ±360 penuh. wrap:360 hanya untuk startAngle.
- Gunakan ID data stabil sebagai key agar identitas dan animasi terjaga. Indeks array tidak cocok sebagai ID tetap saat urutan berubah.
Properti
children?ViewContentKonten gambar anak.
radius?numberRadius dalam poin: radius untuk kedua sumbu, radiusX/radiusY menimpa per sumbu. Negatif menjadi 0.
80radiusX?numberRadius dalam poin: radius untuk kedua sumbu, radiusX/radiusY menimpa per sumbu. Negatif menjadi 0.
80radiusY?numberRadius dalam poin: radius untuk kedua sumbu, radiusX/radiusY menimpa per sumbu. Negatif menjadi 0.
80startAngle?numberSudut awal dalam derajat, dinormalisasi modulo 360 saat pengambilan sampel.
-90sweepAngle?numberRentang sudut dalam derajat, dibatasi ke -360…360 saat pengambilan sampel. Nilai positif searah jarum jam; wrap tidak didukung.
360includeEnd?booleanSertakan sudut akhir dalam penempatan. Untuk lingkaran penuh, false mencegah tumpang tindih awal dan akhir.
falsechildRotation?"none" | "radial" | "tangent"none mempertahankan arah, radial mengikuti radius, tangent menambah 90 derajat.
"none"Properti umum
width?number | "auto" | "fill"Lebar dalam poin, ukuran otomatis, atau memenuhi induk.
100height?number | "auto" | "fill"Tinggi dalam poin, ukuran otomatis, atau memenuhi induk.
80padding?numberPadding konten dalam poin.
0x?numberOffset visual dalam poin: x ke kanan, y ke bawah; ruang tata letak tidak berubah.
0y?numberOffset visual dalam poin: x ke kanan, y ke bawah; ruang tata letak tidak berubah.
0transform?ViewTransformTransformasi seluruh View tanpa mengubah tata letak. Translasi dalam poin, rotasi/kemiringan dalam derajat, skala 1 tetap, jangkar 0–1.
{rotation: 0}background?PaintWarna atau gradasi latar; clear berarti transparan.
"clear"opacity?numberOpasitas seluruh View: 0 transparan, 1 buram.
1cornerRadius?numberRadius sudut dalam poin.
0clipped?booleanPotong gambar yang melewati batas View.
falseclip?"rectangle" | "ellipse"Bentuk potongan rectangle atau ellipse; Material juga menerima false untuk mematikan.
"rectangle"mask?View | nullView masker alfa. Di tengah tanpa memengaruhi tata letak; null menonaktifkan masker.
<Circle width="fill" height="fill" background="white"/>zIndex?numberUrutan gambar antar saudara; nilai lebih besar di depan.
0blur?numberRadius buram dalam poin; 0 menonaktifkan.
4innerShadow?DrawingEffectWarna, opasitas, radius buram dan offset x/y efek; jarak dalam poin.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectWarna, opasitas, radius buram dan offset x/y efek; jarak dalam poin.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorWarna bayangan luar.
HDR("black")shadowOpacity?numberOpasitas bayangan 0–1; 0 menyembunyikannya.
0shadowRadius?numberRadius buram bayangan luar dalam poin.
4shadowX?numberOffset bayangan dalam poin: x ke kanan, y ke bawah.
0shadowY?numberOffset bayangan dalam poin: x ke kanan, y ke bawah.
2animations?RadialLayoutAnimation[]Animasi perubahan properti. duration/delay dalam detik; from/to adalah ujung; repeat/autoreverse untuk pengulangan, wrap untuk periode.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberIdentitas stabil di antara elemen sejajar.
Contoh praktis
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>
);
}
Animasi
widthheightpaddingxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYradiusradiusXradiusYstartAnglesweepAngletransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYJika dihilangkan
Tabel menunjukkan perilaku penghilangan yang diverifikasi dari implementasi; contoh bukan default. Untuk hasil tetap beri nilai eksplisit; ukuran dan warna kontekstual bukan konstanta.
| Properti | Jika dihilangkan |
|---|---|
radius | 80 |
startAngle | -90 |
sweepAngle | 360 |
includeEnd | false |
childRotation | "none" |