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 , которое позволяет тестовым фреймворкам находить элемент в тестах.