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 del 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 tu app diseñe contenido que sea independiente de las características de visualización del dispositivo de realidad extendida.
Establecer 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().
Posicionar 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 el cabeceo, el alabeo y el giro, que especifican la rotación alrededor de los ejes
x,yyz, respectivamente - Usando un
axisAngle, que es unVector3que representa el eje de rotación y la cantidad de grados que debe rotar - Usando un
Quaternionque 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.
Mover y cambiar 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).
Mover elementos
Cuando el modificador movable está presente y habilitado, se mostrarán controles de IU
arrastrables que permiten al usuario mover el elemento en el espacio 3D. El comportamiento específico de este movimiento se define mediante el movePolicy proporcionado:
MovePolicy.default: El sistema controla el movimiento por completo y calcula y aplica automáticamente la nueva postura y escala según la entrada del usuario.MovePolicy.custom: El sistema calcula la postura objetivo según la entrada, pero no la aplica automáticamente al elemento asociado. Esto es útil para restringir el movimiento o crear un movimiento personalizado en tu app.
Cambiar el tamaño de los elementos
Cuando el modificador resizable() está presente y habilitado, se mostrarán controles de IU
que permiten al usuario cambiar el tamaño del elemento en el espacio 3D. El comportamiento específico del cambio de tamaño se define mediante el resizePolicy proporcionado:
ResizePolicy.default(): El sistema controla automáticamente el gesto de cambio de tamaño y aplica las nuevas dimensiones al contenido.ResizePolicy.custom(): El sistema proporciona unSpatialResizeEventy no aplica automáticamente el resultado del cambio de tamaño al elemento asociado.
Cambiar la apariencia de los elementos componibles
alpha
El modificador alpha establece la opacidad del elemento y sus elementos secundarios,
donde 0f representa la transparencia total y 1.0f representa la opacidad completa.
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.