SubspaceModifier
аналогичен модификатору Compose для компонуемых объектов в Subspace
. SubspaceModifier
позволяет манипулировать компонуемыми объектами в трёхмерном пространстве, помогая позиционировать, вращать и добавлять поведение к узлам трёхмерной компоновки.
Макет
По умолчанию Subspace
ограничено рекомендуемым пространством для просмотра приложения . Эти границы используются при определении макета компонентов подпространства, аналогично границам в макетах 2D Compose .
Заполнить границы
Модификаторы fillMaxSize
, fillMaxWidth
, fillMaxHeight
и fillMaxDepth
заставляют содержимое (частично) заполнять границы родительского элемента. Использование модификаторов fill помогает вашему приложению размещать контент независимо от характеристик экрана устройства XR.
Установите размер и требуемый размер
Модификаторы size
, width
, height
и depth
задают предпочтительный размер содержимого. Чтобы указать точный размер содержимого, используйте requiredSize
, requiredWidth
, requiredHeight
и requiredDepth
. Эти единицы измерения должны быть указаны в dp
; для преобразования метров в dp используйте Meter.toDp()
.
Позиция компонуемых объектов
offset
Модификатор offset
перемещает компонуемый объект в трёхмерном пространстве вдоль осей x
, y
и z
. Эти единицы измерения должны быть указаны в dp
; для преобразования метров в dp используйте Meter.toDp()
.
rotate
Модификатор rotate
вращает указанный составной объект в пространстве. Направление и величину поворота можно задать различными способами:
- Используя тангаж, рыскание и крен, которые определяют вращение вокруг осей
x
,y
иz
соответственно, - Используя
axisAngle
, который являетсяVector3
представляющим ось вращения, и количество градусов, вокруг которых ее нужно повернуть, - Использование
Quaternion
, представляющего вращение.
Изменить внешний вид компонуемых объектов
alpha
Модификатор alpha
задает непрозрачность элемента и его дочерних элементов, где 0f
означает полную прозрачность, а 1.0f
означает полную непрозрачность.
scale
Модификатор scale
масштабирует содержимое компонуемого объекта по горизонтальной, вертикальной и глубинной осям.
Добавить поведение к компонуемым объектам
resizable
При включении модификатора resizable
отображаются перетаскиваемые элементы управления пользовательского интерфейса, позволяющие пользователю изменять размер элемента. Это аналогично использованию ResizableComponent
для Entity
.
movable
При включении модификатора movable
к компоненту будут добавлены элементы управления пользовательского интерфейса, позволяющие пользователю перемещать элемент в трёхмерном пространстве. Это аналогично использованию MovableComponent
для Entity
.
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
, которое позволяет тестовым фреймворкам находить элемент в тестах.