Jetpack Compose para XR
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
12 de febrero de 2025 | - | - | - | 1.0.0-alpha02 |
Cómo declarar dependencias
Para agregar una dependencia en XR Compose, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.
Agrega las dependencias de los artefactos que necesites en el archivo build.gradle
de tu app o módulo:
Groovy
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha01" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha01") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha01") }
Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.
Comentarios
Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.
Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.
Versión 1.0
Versión 1.0.0-alpha02
12 de febrero de 2025
Lanzamiento de androidx.xr.compose:compose:1.0.0-alpha02
y androidx.xr.compose:compose-testing:1.0.0-alpha02
. La versión 1.0.0-alpha02 contiene estas confirmaciones.
Nuevas funciones
- El panel de actividades ahora puede ocultar su contenido cuando se activa un diálogo espacial.
- La API de
Orbiter
ahora se puede usar en contextosSubspaceComposable
y adjuntará Orbiters a su elemento superior componible basado enSubspaceLayout
más cercano. - Se introdujo
LayoutCoordinatesAwareModifierNode
para permitir modificadores basados en posicionamiento personalizado. - Se agregaron métodos de ciclo de vida de conexión/desconexión a
SubspaceModifier.Node
. - Se agregó
scaleWithDistance
al modificador móvil. Cuando se habilitascaleWithDistance
, el elemento de subespacio que se mueve aumentará o disminuirá. También mantendrá cualquier escala explícita que tuviera antes del movimiento.
Cambios en la API
- Se quitó
SessionCallbackProvider
a favor deSpatialCapabilities
.
Otros cambios
- Se redujo
minSDK
a 24. Todas las APIs de Jetpack XR siguen requiriendo el nivel de API 34 en el entorno de ejecución. - Los constructores
Orbiter
EdgeOffset.inner
,EdgeOffset.outer
yEdgeOffset.overlap
ya no son métodos@Composable
, lo que les permite usarse en contextos no componibles. - Se actualizaron los niveles de elevación espacial para que coincidan con las especificaciones de UX más recientes.
- Implementa la interfaz
SubspaceSemanticsInfo
enMeasurableLayout
. - Se cambió el nombre de
SubspaceModifierElement
aSubspaceModifierNodeElement
.
Correcciones de errores
- Se realizaron correcciones para estabilizar el orden de
SubspaceModifier
.SubspaceModifier
debería comportarse de forma más confiable. Los modificadores de desplazamiento, rotación, escala, desplazamiento y tamaño se pueden usar en cualquier orden.
Versión 1.0.0-alpha01
12 de diciembre de 2024
Lanzamiento de androidx.xr.compose:compose-*1.0.0-alpha01
.
Funciones de la versión inicial
Lanzamiento inicial para desarrolladores de Jetpack Compose para XR. Usa conceptos conocidos de Compose, como filas y columnas, para crear diseños de IU espaciales en XR, ya sea que estés migrando una app 2D existente a XR o creando una nueva app de XR desde cero. Esta biblioteca proporciona elementos componibles espaciales y de subespacio, como paneles y orbitadores espaciales, que te permiten colocar tu IU existente de Compose 2D o basada en vistas en un diseño espacial. Presenta el elemento componible de subespacio de volumen, que te permite colocar entidades de SceneCore, como modelos 3D, en relación con tu IU. Obtén más información en esta guía para desarrolladores:
Subspace
: Este elemento componible se puede colocar en cualquier lugar dentro de la jerarquía de la IU de tu app, lo que te permite mantener diseños para la IU 2D y espacial sin perder el contexto entre los archivos. Esto facilita compartir elementos como la arquitectura de la app existente entre XR y otros factores de forma sin necesidad de elevar el estado a través de todo el árbol de la IU ni volver a diseñar la arquitectura de tu app.SpatialPanel: Un panel espacial es un subespacio componible que te permite mostrar contenido de la app. Por ejemplo, puedes mostrar la reproducción de videos, imágenes fijas o cualquier otro contenido en un panel espacial.
Orbitador: Un orbitador es un componente de IU espacial. Está diseñado para adjuntarse a un panel espacial correspondiente y contiene elementos de acción contextuales y de navegación relacionados con ese panel espacial. Por ejemplo, si creaste un panel espacial para mostrar contenido de video, puedes agregar controles de reproducción de video dentro de un orbitador.
Volumen: Coloca entidades de SceneCore, como modelos 3D, en relación con tu IU.
Diseño espacial: Puedes crear varios paneles espaciales y colocarlos dentro de un diseño espacial con
SpatialRow
,SpatialColumn
,SpatialBox
ySpatialLayoutSpacer
. UsaSubspaceModifier
para personalizar tu diseño.Componentes de IU espaciales: Estos elementos se pueden volver a usar en tu IU 2D, y sus atributos espaciales solo serán visibles cuando se habiliten las capacidades espaciales.
SpatialDialog
: El panel se empujará ligeramente hacia atrás en la profundidad en Z para mostrar un diálogo elevado.SpatialPopUp
: El panel se empujará ligeramente hacia atrás en la profundidad en Z para mostrar una ventana emergente elevada.SpatialElevation
: Se puede configurarSpatialElevationLevel
para agregar elevación.
SpatialCapabilities: Las capacidades espaciales pueden cambiar a medida que los usuarios interactúan con tu app o el sistema, o incluso pueden ser modificadas por la app en sí, por ejemplo, cuando se cambia al espacio principal o al espacio completo. Para evitar problemas, tu app debe verificar
LocalSpatialCapabilities.current
para determinar qué APIs son compatibles con el entorno actual.isSpatialUiEnabled
: Elementos de la IU espacial (p. ej., SpatialPanel)isContent3dEnabled
: Objetos 3DisAppEnvironmentEnabled
: El entornoisPassthroughControlEnabled
: Indica si la aplicación puede controlar el estado de transferencia.isSpatialAudioEnabled
: Audio espacial
Errores conocidos
- Actualmente, se requiere un minSDK de 30 para usar Jetpack Compose para XR. Como solución alternativa, puedes agregar la siguiente entrada de manifiesto
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
para poder compilar y ejecutar con un minSDK de 23. - Actualmente, las apps de Jetpack XR requieren solicitar el permiso
android.permission.SCENE_UNDERSTANDING
en AndroidManifest. - Cuando una app se inicia directamente en el espacio completo con la propiedad
PROPERTY_XR_ACTIVITY_START_MODE
en su manifiesto, las actividades o aplicaciones se abren inicialmente en el espacio principal antes de migrar al espacio completo. - Es posible que, al principio, los glTF en elementos componibles de volumen parpadeen en la ubicación incorrecta.
- Si usas un SpatialDialog en un panel que se movió de forma significativa, el contenido se enviará en la dirección incorrecta.