Entender os modificadores de subespaço

Dispositivos XR relevantes
Estas orientações ajudam você a criar experiências para esses tipos de dispositivos XR.
Headsets XR
Óculos XR com fio

Um SubspaceModifier é semelhante a um modificador do Compose para elementos combináveis em um Subspace. Um SubspaceModifier permite manipular elementos combináveis no espaço 3D, ajudando a posicionar, girar e adicionar comportamentos a nós de layout 3D.

Layout

Por padrão, um Subspace é limitado pelo espaço recomendado para visualizar um app. Esses limites são usados ao medir o layout dos componentes do subespaço, semelhante aos limites em layouts do Compose 2D.

Preencher limites

Os modificadores fillMaxSize, fillMaxWidth, fillMaxHeight e fillMaxDepth fazem com que o conteúdo preencha (parcialmente) os limites do pai. O uso de modificadores de preenchimento ajuda o layout do app a criar conteúdo independente das características de exibição do dispositivo XR.

Definir o tamanho e o tamanho necessário

Os modificadores size, width, height, e depth declaram o tamanho preferencial do conteúdo. Para declarar o tamanho exato do conteúdo, use requiredSize, requiredWidth, requiredHeight e requiredDepth. Essas unidades precisam ser especificadas em dp. Para converter de metros para dp, use Meter.toDp().

Posicionar elementos combináveis

offset

O modificador offset move o elemento combinável no espaço 3D ao longo dos eixos x, y, e z. Essas unidades precisam ser especificadas em dp. Para converter de metros para dp, use Meter.toDp().

rotate

O rotate modificador gira o elemento combinável fornecido no espaço. É possível especificar a direção e a quantidade de rotação de maneiras diferentes:

  • Usando inclinação, guinada e rolagem, que especificam a rotação em torno dos eixos x, y e z, respectivamente,
  • Usando um axisAngle, que é um Vector3 que representa o eixo de rotação e a quantidade de graus que ele precisa ser girado,
  • Usando um Quaternion que representa a rotação.

rotateToLookAtUser

O modificador rotateToLookAtUser gira continuamente o conteúdo para que ele fique sempre voltado para o usuário. Também é possível usar esse modificador para conseguir um efeito de "outdoor" em que o conteúdo gira para ficar de frente para o usuário no eixo Y, mas ainda permanece na vertical e alinhado com a gravidade. Para fazer isso, combine o modificador rotateToLookAtUser com o modificador gravityAligned.

Mover e redimensionar com elementos combináveis

Permita que os usuários manipulem diretamente a posição e o tamanho dos objetos no espaço 3D. É possível adicionar esses modificadores a componentes individuais (como SpatialPanel), subespaços e componentes de layout espacial (como SpatialRow ou SpatialColumn).

Mover elementos

Os modificadores móveis permitem que os usuários peguem e reposicionem elementos de subespaço.

  • transformingMovable: use esse modificador para movimentos padrão. Ele configura o elemento para ser interativo e móvel pelo usuário. O sistema calcula e aplica automaticamente a nova pose e escala com base na entrada do usuário.

  • movable: use esse modificador para definir o comportamento de movimento personalizado. Embora o sistema forneça a capacidade de movimento, é necessário usar o evento onMove obrigatório e aplicar o resultado. Isso é útil para restringir o movimento ou criar um movimento personalizado no app.

Redimensionar elementos

Os modificadores redimensionáveis permitem que os usuários peguem e redimensionem elementos de subespaço.

  • transformingResizable: use esse modificador para redimensionamento gerenciado pelo sistema. Esse modificador processa automaticamente o gesto de redimensionamento e aplica as novas dimensões especificadas pelo usuário.

  • resizable: use esse modificador para lógica de redimensionamento personalizada. Embora o sistema forneça a capacidade de redimensionamento, é necessário usar o evento onResize e aplicar o resultado. Esse modificador é útil para cenários complexos, como manter uma proporção específica ou reajustar o layout geral de outros componentes após o término de um redimensionamento.

Mudar a aparência de elementos combináveis

alpha

O modificador alpha define a opacidade do elemento e dos filhos dele, em que 0f representa totalmente transparente e 1.0f representa completamente opaco.

scale

O modificador scale dimensiona o conteúdo do elemento combinável ao longo dos eixos horizontal, vertical e de profundidade.

Testes e acessibilidade

semantics

O modificador semantics adiciona semântica ao nó de layout para uso em testes e acessibilidade. Consulte Semântica no Jetpack Compose e SemanticsModifier.

testTag

O modificador testTag é um atalho para SemanticsPropertyReceiver.testTag, que permite que as estruturas de teste encontrem o elemento em testes.