RadialLayout
円の周りにスケール、数字、または記号を配置します。 radius は View の中心からレイアウト中心までの距離を制御し、startAngle と sweepAngle は分布範囲を制御します。
例
function main() {
return (
<RadialLayout
radius={70}
startAngle={-90}
sweepAngle={270}
includeEnd={true}
>
{[0, 60, 120, 180].map((value) => (
<Text key={value}>{value}</Text>
))}
</RadialLayout>
);
}
使い方
- 半径は子の中心位置で、容器の外径ではありません。includeEnd=false は n 分割、true は n−1 分割です。一周で終点を含むと先頭と末尾が重なります。childRotation は子の向きです。
- 角度は度で 0 が右、90 が下、正 sweep は時計回り。startAngle は 360 周期、sweepAngle は方向を保って −360…360 に制限します。0 は空、±360 は一周。wrap:360 は startAngle 用で sweepAngle には使えません。
- 配列の key には安定したデータ ID を使い、更新とアニメーションで同じ View を識別します。並べ替える配列ではインデックスを恒久 ID にしないでください。
プロパティ
children?ViewContent子の描画コンテンツ。
radius?number配置半径(ポイント)。radius は両軸、radiusX/radiusY は個別上書き。負値は 0。
80radiusX?number配置半径(ポイント)。radius は両軸、radiusX/radiusY は個別上書き。負値は 0。
80radiusY?number配置半径(ポイント)。radius は両軸、radiusX/radiusY は個別上書き。負値は 0。
80startAngle?number開始角度(度)。サンプリング時に 360 を法として正規化します。
-90sweepAngle?number掃引角度(度)。サンプリング時に -360…360 に制限します。正の値は時計回りです。wrap は使用できません。
360includeEnd?boolean配置に終端を含めるか。全周では false にして最初と最後の重複を避けます。
falsechildRotation?"none" | "radial" | "tangent"none は回転なし、radial は半径方向、tangent はさらに 90 度回転。
"none"共通プロパティ
width?number | "auto" | "fill"幅。ポイント指定、自動サイズ、親領域への拡張に対応します。
100height?number | "auto" | "fill"高さ。ポイント指定、自動サイズ、親領域への拡張に対応します。
80padding?numberコンテンツの内側余白(ポイント)。
0x?number見た目の移動量(ポイント)。x は右、y は下。レイアウトの占有領域は変わりません。
0y?number見た目の移動量(ポイント)。x は右、y は下。レイアウトの占有領域は変わりません。
0transform?ViewTransformレイアウトを変えず全体を変形。移動はポイント、回転・傾きは度、倍率 1 は等倍、基点は 0–1。
{rotation: 0}background?Paint背景の色またはグラデーション。clear は透明。
"clear"opacity?numberView 全体の不透明度。0 は透明、1 は不透明。
1cornerRadius?number角丸の半径(ポイント)。
0clipped?booleanView の境界からはみ出す描画を切り抜きます。
falseclip?"rectangle" | "ellipse"切り抜き形状は rectangle または ellipse。Material は false で無効化も可能。
"rectangle"mask?View | nullアルファマスク用の View。レイアウトに影響せず中央に配置されます。null でマスクを無効にします。
<Circle width="fill" height="fill" background="white"/>zIndex?number兄弟 View の重なり順。大きい値ほど手前。
0blur?numberぼかし半径(ポイント)。0 で無効。
4innerShadow?DrawingEffect効果の色、不透明度、ぼかし半径、x/y オフセット。距離はポイント。
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffect効果の色、不透明度、ぼかし半径、x/y オフセット。距離はポイント。
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?Color外側の影の色。
HDR("black")shadowOpacity?number外側の影の不透明度 0–1。0 で非表示。
0shadowRadius?number外側の影のぼかし半径(ポイント)。
4shadowX?number影の移動量(ポイント)。x は右、y は下。
0shadowY?number影の移動量(ポイント)。x は右、y は下。
2animations?RadialLayoutAnimation[]プロパティ変更のアニメーション。duration/delay は秒、from/to は端点、repeat/autoreverse は反復、wrap は周期。
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | number兄弟要素間で安定した識別子。
組み合わせ例
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>
);
}
アニメーション
widthheightpaddingxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYradiusradiusXradiusYstartAnglesweepAngletransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorY省略時の動作
表は実装で確認した省略時の動作です。プロパティ例は既定値ではありません。固定結果には明示指定し、環境に依存する寸法やテーマ色を定数と思わないでください。
| プロパティ | 省略時の動作 |
|---|---|
radius | 80 |
startAngle | -90 |
sweepAngle | 360 |
includeEnd | false |
childRotation | "none" |