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轴的旋转, - 使用
axisAngle(表示旋转轴的Vector3)以及应围绕该轴旋转的度数, - 使用表示旋转的
Quaternion。
更改可组合项的外观
alpha
alpha 修饰符用于设置元素及其子级的不透明度,其中 0f 表示完全透明,1.0f 表示完全不透明。
scale
scale 修饰符沿水平轴、垂直轴和深度轴缩放可组合项的内容。
为可组合项添加行为
resizable
启用 resizable 修饰符后,系统会显示可拖动的界面控件,以便用户调整元素大小。这类似于在 Entity 上使用 ResizableComponent。
movable
启用 movable 修饰符后,系统会向组件添加界面控件,以便用户在 3D 空间中移动元素。这类似于在 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 的简写形式,可让测试框架在测试中找到相应元素。