Modificadores de subespaço

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 você a posicionar, girar e adicionar comportamentos aos nós de layout 3D.

Layout

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

Limites de preenchimento

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

Definir o tamanho e o tamanho obrigatório

Os modificadores size, width, height e depth declaram o tamanho preferido 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 modificador rotate gira o elemento combinável especificado no espaço. Você pode especificar a direção e a quantidade de rotação de diferentes maneiras:

  • Usando inclinação, rotação horizontal e rotação vertical, 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.

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.

Adicionar comportamentos a elementos combináveis

resizable

Quando o modificador resizable está ativado, controles de interface arrastáveis são mostrados para que o usuário redimensione o elemento. Isso é semelhante a usar ResizableComponent em um Entity.

movable

Quando o modificador movable está ativado, controles de UI são adicionados ao componente, permitindo que o usuário mova o elemento no espaço 3D. Isso é semelhante a usar MovableComponent em um Entity.

Um nó de layout movable pode especificar opcionalmente os tipos de planos a que ele deve se ancorar quando é movido. Por exemplo, para criar um SpatialPanel que se ajuste a tabelas:

SpatialPanel(
  modifier.movable(anchorPlaneSemantics = setOf(PlaneSemantic.TABLE))
) {
  // This panel snaps to available planes that are detected as a TABLE.
}

Para ajustar aos planos, é necessário conceder ao app a permissão de tempo de execução android.permission.SCENE_UNDERSTANDING_COARSE.

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 é uma abreviação de SemanticsPropertyReceiver.testTag, que permite que as estruturas de teste encontrem o elemento em testes.