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
ez
, respectivamente. - Usando um
axisAngle
, que é umVector3
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.