Comprende los modificadores de subespacio

Dispositivos de realidad extendida correspondientes
Esta guía te ayuda a crear experiencias para estos tipos de dispositivos de realidad extendida.
Visores de realidad extendida
Lentes de realidad extendida con cable

Un SubspaceModifier es similar a un modificador de Compose para elementos componibles en un Subspace. Un SubspaceModifier te permite manipular elementos componibles en el espacio 3D, lo que te ayuda a posicionar, rotar y agregar comportamientos a los nodos de diseño 3D.

Diseño

De forma predeterminada, un Subspace está delimitado por el espacio recomendado para ver una app. Estos límites se usan cuando se mide el diseño de los componentes de tu subespacio, de manera similar a los límites en los diseños de Compose 2D.

Completar límites

Los modificadores fillMaxSize, fillMaxWidth, fillMaxHeight y fillMaxDepth hacen que el contenido llene (parcialmente) los límites de su elemento superior. El uso de modificadores de relleno ayuda a que el diseño de tu app contenga contenido independiente de las características de visualización del dispositivo de realidad extendida.

Establece el tamaño y el tamaño requerido

Los modificadores size, width, height y depth declaran el tamaño preferido del contenido. Para declarar el tamaño exacto del contenido, usa requiredSize, requiredWidth, requiredHeight y requiredDepth. Estas unidades deben especificarse en dp. Para convertir de metros a dp, usa Meter.toDp().

Posiciona elementos componibles

offset

El modificador offset mueve el elemento componible en el espacio 3D a lo largo de los ejes x, y, y z. Estas unidades deben especificarse en dp. Para convertir de metros a dp, usa Meter.toDp().

rotate

El rotate modificador rota el elemento componible determinado en el espacio. Puedes especificar la dirección y la cantidad de rotación de diferentes maneras:

  • Usando cabeceo, guiñada y alabeo, que especifican la rotación alrededor de los ejes x, y y z, respectivamente
  • Usando un axisAngle, que es un Vector3 que representa el eje de rotación y la cantidad de grados que debe rotarse alrededor
  • Usando un Quaternion que representa la rotación

rotateToLookAtUser

El modificador rotateToLookAtUser rota continuamente el contenido para que esté orientado hacia el usuario en todo momento. También puedes usar este modificador para lograr un efecto de "cartelera" en el que el contenido rota para orientarse hacia el usuario en el eje Y mientras permanece en posición vertical y alineado con la gravedad. Para ello, combina el modificador rotateToLookAtUser con el modificador gravityAligned.

Mueve y cambia el tamaño con elementos componibles

Permite que los usuarios manipulen directamente la posición y el tamaño de los objetos en el espacio 3D. Puedes agregar estos modificadores a componentes individuales (como SpatialPanel), subespacios y componentes de diseño espacial (como SpatialRow o SpatialColumn).

Mueve elementos

Los modificadores movibles permiten que los usuarios tomen y cambien la posición de los elementos del subespacio.

  • transformingMovable: Usa este modificador para el movimiento estándar. Este modificador configura el elemento para que sea interactivo y movible por el usuario. El sistema calcula y aplica automáticamente la nueva postura y escala según la entrada del usuario.

  • movable: Usa este modificador para definir el comportamiento de movimiento personalizado. Si bien el sistema proporciona la indicación visual de movimiento, debes usar el evento onMove obligatorio y aplicar el resultado. Esto es útil para restringir el movimiento o crear un movimiento personalizado en tu app.

Cambia el tamaño de los elementos

Los modificadores redimensionables permiten que los usuarios tomen y cambien el tamaño de los elementos del subespacio.

  • transformingResizable: Usa este modificador para el cambio de tamaño administrado por el sistema. Este modificador controla automáticamente el gesto de cambio de tamaño y aplica las nuevas dimensiones que especifica el usuario.

  • resizable: Usa este modificador para la lógica de cambio de tamaño personalizada. Si bien el sistema proporciona la capacidad de cambio de tamaño, debes usar el evento onResize y aplicar el resultado. Este modificador es útil para situaciones complejas, como mantener una relación de aspecto específica o reajustar el diseño general de otros componentes después de que finaliza un cambio de tamaño.

Cambia la apariencia de los elementos componibles

alpha

El modificador alpha establece la opacidad del elemento y sus elementos secundarios, donde 0f representa completamente transparente y 1.0f representa completamente opaco.

scale

El modificador scale escala el contenido del elemento componible a lo largo de los ejes horizontal, vertical y de profundidad.

Pruebas y accesibilidad

semantics

El modificador semantics agrega semántica al nodo de diseño para usarlo en pruebas y accesibilidad. Consulta Semántica en Jetpack Compose y SemanticsModifier.

testTag

El modificador testTag es una abreviatura de SemanticsPropertyReceiver.testTag, que permite que los frameworks de prueba encuentren el elemento en las pruebas.