SubspaceModifier
は、Subspace
のコンポーザブルの Compose 修飾子に似ています。SubspaceModifier
を使用すると、3D 空間でコンポーザブルを操作できます。これにより、3D レイアウト ノードの位置決め、回転、動作の追加が可能になります。
レイアウト
デフォルトでは、Subspace
はアプリの閲覧に推奨されるスペースによって制限されます。これらの境界は、2D Compose レイアウトの境界と同様に、サブスペース コンポーネントのレイアウトを測定する際に使用されます。
塗りつぶし境界
修飾子 fillMaxSize
、fillMaxWidth
、fillMaxHeight
、fillMaxDepth
を使用すると、コンテンツが親の境界を(部分的に)埋めます。塗りつぶし修飾子を使用すると、XR デバイスのディスプレイ特性に依存しないコンテンツをアプリのレイアウトに配置できます。
サイズと必須サイズを設定する
修飾子 size
、width
、height
、depth
は、コンテンツの推奨サイズを宣言します。コンテンツの正確なサイズを宣言するには、requiredSize
、requiredWidth
、requiredHeight
、requiredDepth
を使用します。これらの単位は dp
で指定する必要があります。メートルから dp に変換するには、Meter.toDp()
を使用します。
コンポーザブルを配置する
offset
offset
修飾子は、x
、y
、z
軸に沿って 3D 空間でコンポーザブルを移動します。これらの単位は dp
で指定する必要があります。メートルから dp に変換するには、Meter.toDp()
を使用します。
rotate
rotate
修飾子は、指定されたコンポーザブルを空間内で回転させます。回転の方向と量は、さまざまな方法で指定できます。
- ピッチ、ヨー、ロールを使用して、それぞれ
x
、y
、z
軸を中心とした回転を指定します。 - 回転軸を表す
Vector3
であるaxisAngle
と、回転させる角度を使用して、 - 回転を表す
Quaternion
を使用します。
コンポーザブルの外観を変更する
alpha
alpha
修飾子は、要素とその子要素の不透明度を設定します。0f
は完全に透明、1.0f
は完全に不透明を表します。
scale
scale
修飾子は、コンポーザブルのコンテンツを横軸、縦軸、奥行き軸に沿って拡大 / 縮小します。
コンポーザブルに動作を追加する
resizable
resizable
修飾子が有効になっている場合、ユーザーが要素のサイズを変更できるドラッグ可能な UI コントロールが表示されます。これは、Entity
で ResizableComponent
を使用するのと同様です。
movable
movable
修飾子を有効にすると、ユーザーが 3D 空間で要素を移動できる UI コントロールがコンポーネントに追加されます。これは、Entity
で MovableComponent
を使用するのと似ています。
movable
レイアウト ノードは、移動時にアンカーするプレーンのタイプを必要に応じて指定できます。たとえば、テーブルにスナップする SpatialPanel
を作成するには:
SpatialPanel(
modifier.movable(anchorPlaneSemantics = setOf(PlaneSemantic.TABLE))
) {
// This panel snaps to available planes that are detected as a TABLE.
}
平面にスナップするには、アプリに android.permission.SCENE_UNDERSTANDING_COARSE
ランタイム権限が付与されている必要があります。
テストとアクセシビリティ
semantics
semantics
修飾子は、テストやユーザー補助機能で使用するセマンティクスをレイアウト ノードに追加します。Jetpack Compose のセマンティクスと SemanticsModifier
をご覧ください。
testTag
testTag
修飾子は SemanticsPropertyReceiver.testTag
の短縮形です。これにより、テスト フレームワークはテストで要素を見つけることができます。