Понимание модификаторов подпространства

Применимые устройства XR
Данное руководство поможет вам создавать приложения для устройств XR такого типа.
XR-гарнитуры
Проводные XR-очки

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 , представляющий вращение.

rotateToLookAtUser

Модификатор rotateToLookAtUser непрерывно вращает контент таким образом, чтобы он всегда был обращен к пользователю. Этот модификатор также можно использовать для достижения эффекта «билборда», когда контент вращается вокруг пользователя по оси Y, оставаясь при этом в вертикальном положении и выровненным по силе тяжести. Для этого объедините модификатор rotateToLookAtUser с модификатором gravityAligned .

Перемещайте и изменяйте размер с помощью компонуемых объектов.

Предоставьте пользователям возможность напрямую управлять положением и размером объектов в трехмерном пространстве. Вы можете добавлять эти модификаторы к отдельным компонентам (например, SpatialPanel ), подпространствам и компонентам пространственной компоновки (например, SpatialRow или SpatialColumn ).

Переместить элементы

Модификаторы перемещения позволяют пользователям захватывать и изменять положение элементов подпространства.

  • transformingMovable : Используйте этот модификатор для стандартного перемещения. Этот модификатор настраивает элемент таким образом, чтобы он был интерактивным и мог перемещаться пользователем. Система автоматически вычисляет и применяет новую позу и масштаб на основе ввода пользователя.

  • movable : Используйте этот модификатор для определения пользовательского поведения перемещения. Хотя система предоставляет возможности перемещения, вы должны использовать необходимое событие onMove и применить результат. Это полезно для ограничения перемещения или создания пользовательского перемещения в вашем приложении.

Изменить размер элементов

Модификаторы с изменяемым размером позволяют пользователям захватывать и изменять размер элементов подпространства.

  • transformingResizable : Используйте этот модификатор для изменения размера, управляемого системой. Этот модификатор автоматически обрабатывает жест изменения размера и применяет новые размеры, указанные пользователем.

  • resizable : Используйте этот модификатор для настройки логики изменения размера. Хотя система предоставляет возможность изменения размера, вам необходимо использовать событие onResize и применить результат. Этот модификатор полезен в сложных сценариях, таких как сохранение определенного соотношения сторон или изменение общей компоновки других компонентов после завершения изменения размера.

Изменить внешний вид составных элементов

alpha

Модификатор alpha задает прозрачность элемента и его дочерних элементов, где 0f означает полную прозрачность, а 1.0f — полную непрозрачность.

scale

Модификатор scale изменяет масштаб содержимого составного объекта по горизонтальной, вертикальной осям и оси глубины.

Тестирование и доступность

semantics

Модификатор semantics добавляет семантику к узлу компоновки для использования при тестировании и обеспечении доступности. См. раздел «Семантика в Jetpack Compose» и SemanticsModifier .

testTag

Модификатор testTag — это сокращение от SemanticsPropertyReceiver.testTag , которое позволяет тестовым фреймворкам находить этот элемент в тестах.