Modificadores de subespacio

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 forma similar a los límites en los diseños de Compose en 2D.

Límites de relleno

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 tu app a diseñar contenido independiente de las características de pantalla del dispositivo XR.

Cómo 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 se deben especificar 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 modificador rotate rota el elemento componible determinado en el espacio. Puedes especificar la dirección y la cantidad de rotación de diferentes maneras:

  • Con el uso de la inclinación, la desviación y el balanceo, 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 se debe rotar alrededor de él
  • Usa un Quaternion que represente la rotación.

Cómo cambiar 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 ajusta el contenido del elemento componible a lo largo de los ejes horizontal, vertical y de profundidad.

Agrega comportamientos a elementos componibles

resizable

Cuando se habilita el modificador resizable, se mostrarán controles de IU arrastrables que permitirán al usuario cambiar el tamaño del elemento. Esto es similar a usar ResizableComponent en un Entity.

movable

Cuando se habilita el modificador movable, se agregarán controles de IU al componente que permitirán al usuario mover el elemento en el espacio 3D. Esto es similar a usar MovableComponent en un Entity.

Un nodo de diseño movable puede especificar de forma opcional los tipos de planos a los que debe anclarse cuando se mueve. Por ejemplo, para crear un SpatialPanel que se ajuste a las tablas, haz lo siguiente:

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

Para ajustar a planos, se requiere que se otorgue el permiso de tiempo de ejecución android.permission.SCENE_UNDERSTANDING_COARSE a tu app.

Pruebas y accesibilidad

semantics

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

testTag

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