Модификаторы подпространства

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