RadialLayout
Phân phối tỷ lệ, số hoặc ký hiệu xung quanh một vòng tròn. radius kiểm soát khoảng cách từ tâm đến tâm bố cục của View, còn startAngle và sweepAngle kiểm soát phạm vi phân phối.
Ví dụ
function main() {
return (
<RadialLayout
radius={70}
startAngle={-90}
sweepAngle={270}
includeEnd={true}
>
{[0, 60, 120, 180].map((value) => (
<Text key={value}>{value}</Text>
))}
</RadialLayout>
);
}
Cách sử dụng
- Bán kính đặt tâm con, không phải biên ngoài. includeEnd=false chia n, true chia n−1 phần. Vòng đầy với điểm cuối làm đầu cuối trùng nhau. childRotation điều khiển hướng con.
- Góc tính độ: 0 phải, 90 xuống, sweep dương theo kim đồng hồ. startAngle modulo 360; sweepAngle giới hạn −360…360. 0 không vẽ, ±360 đầy vòng. wrap:360 chỉ cho startAngle.
- Dùng ID dữ liệu ổn định làm key để giữ danh tính khi cập nhật và hoạt ảnh. Chỉ số mảng không phù hợp làm ID cố định khi đổi thứ tự.
Thuộc tính
children?ViewContentNội dung vẽ con.
radius?numberBán kính theo điểm: radius cho hai trục, radiusX/radiusY ghi đè riêng. Số âm thành 0.
80radiusX?numberBán kính theo điểm: radius cho hai trục, radiusX/radiusY ghi đè riêng. Số âm thành 0.
80radiusY?numberBán kính theo điểm: radius cho hai trục, radiusX/radiusY ghi đè riêng. Số âm thành 0.
80startAngle?numberGóc bắt đầu tính bằng độ, lấy phần dư theo 360 khi lấy mẫu.
-90sweepAngle?numberGóc quét tính bằng độ, giới hạn ở -360…360 khi lấy mẫu. Giá trị dương theo chiều kim đồng hồ; không hỗ trợ wrap.
360includeEnd?booleanCó tính điểm cuối góc quét khi sắp xếp. Vòng tròn đầy dùng false để tránh chồng đầu cuối.
falsechildRotation?"none" | "radial" | "tangent"none giữ hướng, radial theo bán kính, tangent xoay thêm 90 độ.
"none"Thuộc tính chung
width?number | "auto" | "fill"Chiều rộng tính bằng point, tự động hoặc lấp đầy khung cha.
100height?number | "auto" | "fill"Chiều cao tính bằng point, tự động hoặc lấp đầy khung cha.
80padding?numberKhoảng đệm nội dung tính bằng point.
0x?numberDịch chuyển hiển thị theo điểm: x sang phải, y xuống dưới; không đổi chỗ trong bố cục.
0y?numberDịch chuyển hiển thị theo điểm: x sang phải, y xuống dưới; không đổi chỗ trong bố cục.
0transform?ViewTransformBiến đổi toàn View không đổi bố cục. Dịch chuyển theo điểm, xoay/nghiêng theo độ, tỷ lệ 1 giữ nguyên, điểm neo 0–1.
{rotation: 0}background?PaintMàu hoặc chuyển màu nền; clear là trong suốt.
"clear"opacity?numberĐộ đục toàn bộ View: 0 trong suốt, 1 đục hoàn toàn.
1cornerRadius?numberBán kính bo góc theo điểm.
0clipped?booleanCắt phần vẽ vượt ra ngoài View.
falseclip?"rectangle" | "ellipse"Hình cắt rectangle hoặc ellipse; Material còn nhận false để tắt.
"rectangle"mask?View | nullView mặt nạ alpha. Căn giữa mà không ảnh hưởng bố cục; null tắt mặt nạ.
<Circle width="fill" height="fill" background="white"/>zIndex?numberThứ tự vẽ giữa các phần tử cùng cấp; giá trị lớn nằm trước.
0blur?numberBán kính làm mờ theo điểm; 0 là tắt.
4innerShadow?DrawingEffectMàu, độ đục, bán kính mờ và độ lệch x/y của hiệu ứng; khoảng cách theo điểm.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectMàu, độ đục, bán kính mờ và độ lệch x/y của hiệu ứng; khoảng cách theo điểm.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorMàu bóng đổ bên ngoài.
HDR("black")shadowOpacity?numberĐộ đục bóng 0–1; 0 ẩn bóng.
0shadowRadius?numberBán kính làm mờ bóng ngoài theo điểm.
4shadowX?numberĐộ lệch bóng theo điểm: x sang phải, y xuống.
0shadowY?numberĐộ lệch bóng theo điểm: x sang phải, y xuống.
2animations?RadialLayoutAnimation[]Hoạt ảnh khi thuộc tính đổi. duration/delay theo giây; from/to là đầu cuối; repeat/autoreverse điều khiển lặp, wrap là chu kỳ.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberĐịnh danh ổn định giữa các phần tử cùng cấp.
Ví dụ kết hợp
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>
);
}
Hoạt ảnh
widthheightpaddingxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYradiusradiusXradiusYstartAnglesweepAngletransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYKhi bỏ qua
Bảng ghi hành vi bỏ qua đã kiểm tra từ triển khai; ví dụ không phải mặc định. Muốn kết quả cố định hãy truyền giá trị rõ, kích thước và màu theo ngữ cảnh không phải hằng số.
| Thuộc tính | Khi bỏ qua |
|---|---|
radius | 80 |
startAngle | -90 |
sweepAngle | 360 |
includeEnd | false |
childRotation | "none" |