Jetpack Compose per XR
| Ultimo aggiornamento | Release stabile | Candidato per la release | Release beta | Release alpha |
|---|---|---|---|---|
| 23 settembre 2026 | - | - | 1.0.0-beta01 | - |
Dichiara le dipendenze
Per aggiungere una dipendenza da XR compose, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per
la tua app o il tuo modulo:
Alla moda
dependencies { implementation "androidx.xr.compose:compose:1.0.0-beta01" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-beta01") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta01") }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per saperne di più, consulta la documentazione di Issue Tracker.
Versione 1.0
Versione 1.0.0-beta01
23 settembre 2026
androidx.xr.compose:compose:1.0.0-beta01 e androidx.xr.compose:compose-testing:1.0.0-beta01 sono state rilasciate. La versione 1.0.0-beta01 contiene questi commit.
Modifiche alle API
DragPolicydeprecato rimosso. Usa invece il descrittoreSubspaceModifier.movable(). (I108d4)- È stato rimosso
ResizePolicy, deprecato, e i relativi utilizzi inSpatialPaneleSpatialExternalSurface. Rimuovi una funzioneSubspaceModifier.resizabledeprecata. Utilizza invece il nuovoSubspaceModifier.resizablecon un nuovoResizePolicy. (I59e6b) - È stato aggiunto il parametro
isPitchUpdateEnabledper consentire l'attivazione o la disattivazione del monitoraggio del tono in modo indipendente. (Ie9e86) - È stata rimossa la possibilità di valori nulli per
pitchLimitsed è stato rinominatoPitchLimits.UNCONSTRAINEDinPitchLimits.FullRange. (I0154f) ExposedDropdownMenuora è una funzione di estensione diExposedDropdownMenuBoxScopeanziché un membro. Potresti dover aggiornare il codice con una nuova importazione. (Ie8a65)- Rimossa la classe
SurfaceProtectiondeprecata. Usa invece il descrittoreSpatialExternalSurfaceProtection. (Iab2c6) - La funzione Orbiter che accetta un
OrbiterPoseProviderè stata ritirata a favore di quella che utilizzaSpatialAlignment. (I4d12b) SpatialActivityPanelora richiede unSpatialActivityPanelController(istanziato utilizzandorememberSpatialActivityPanelController) per avviare e gestire le attività incorporate. (Id25c6)- È stato rimosso il parametro
upDirectiondarotateToLookAtUsere sono stati aggiunti i parametri dei vincoli di rotazione (isYawUpdateEnabledepitchLimits). (I1370a)
Correzioni di bug
- Sono stati risolti vari problemi relativi a
InteractionPolicy. Si è verificato un arresto anomalo se si è verificato un evento di input proprio quando il composable o il figlio (ad esempio un Orbiter) ha avviato una sequenza di eliminazione. Risolve anche un problema per cui un elemento secondario riceveva eventi al passaggio del mouse. (Ifc477) - Dimensioni del riquadro ridotte in
RotateToLookAtUserActivityper evitare il ritaglio sui dispositivi con campo visivo più piccolo. (I8d672)
Problemi noti
- Si è verificato un problema con i pannelli di Compose XR per cui la creazione di molti pannelli in una singola attività potrebbe causare un danneggiamento di ciò che viene visualizzato anche dopo la distruzione dei pannelli.
Versione 1.0.0-alpha17
12 agosto 2026
androidx.xr.compose:compose:1.0.0-alpha17 e androidx.xr.compose:compose-testing:1.0.0-alpha17 sono state rilasciate. La versione 1.0.0-alpha17 contiene questi commit.
Modifiche alle API
- Rimuovi la classe di valori
Meter, che viene sostituita davirtualPixelDensityinScenecore. (I690ee) - L'API
SpatialGltfModelè ora sperimentale e deve essere attivata per l'utilizzo. (I4557e) - Rendi
systemridimensionabile e annullabile (Ib0093) Densityesposto inSubspaceSemanticsInfoa scopo di test. (I2e826)- Rinomina l'opzione predefinita
ResizePolicyinsysteme aggiungi una nuova opzioneDefaultsenza parametri (Ic8b16) - Contrassegna
FollowTargetcome sperimentale. L'intera APIFollowingSubspaceè ora sperimentale. (Id4ee3) - Rimozione delle API
GltfAnimation(Ic2894) - Il metodo parametrizzato
MovePolicy.default()è stato rinominato inMovePolicy.system(). È stata introdotta una proprietàval MovePolicy.Defaultper rappresentare il comportamento di movimento predefinito standard. (Iedcc9) - Estendi i requisiti di attivazione di
ExperimentalMoveAnchorPolicyaPlaneSemanticePlaneOrientation(Ief927) - Rimuovi
resetMinsdaVolumeConstraints.offset(Ib2f2f) - È stata rimossa la funzione
SceneCoreEntitySizeAdapterritirata. (Ib6722) - Rimossa la funzione di overload
Subspacedeprecata conallowUnboundedSubspace. (I8e97f) - È stato rimosso l'overload del modificatore semantico deprecato. (I4ac10)
Correzioni di bug
- Risolto il problema per cui i figli di un
Composablecon unInteractionPolicyallegato attivano eventi di input (Icdba6)
Versione 1.0.0-alpha16
15 luglio 2026
androidx.xr.compose:compose:1.0.0-alpha16 e androidx.xr.compose:compose-testing:1.0.0-alpha16 sono state rilasciate. La versione 1.0.0-alpha16 contiene questi commit.
Modifiche alle API
- Rimuovi le API
ComponentOverride(I820c4) - Le API
GltfAnimationeSpatialGltfModelAnimationsono state contrassegnate come sperimentali. Alcune proprietà sono state trasformate in getter. (I8d689, b/524771027) - È stato corretto il comportamento della densità complessiva stabilendo che la conversione tra metri e pixel sia costante. Meter.kt,
Session.scene.virtualPixelDensityritirato, ora può essere utilizzato come alternativa. (I122ff, b/430097855, b/474168798) - Aggiorna il modificatore ridimensionabile in modo che utilizzi un
ResizePolicyanziché due modificatori (I7fb0f, b/496257436, b/519672992) - È stato aggiunto un parametro di tolleranza:
Dp = Dp(0.5f)a tutte le asserzioni di uguaglianza di posizione e dimensione in rappresentazione in virgola mobile pubbliche inSubspaceAssertions.kt. Il comportamento predefinito della tolleranza (0.5.dp) è completamente documentato. (I266cb, b/521491915) - Aggiunta di un sovraccarico mobile con il parametro
movePolicye ritiro ditransformingMovableemovable(Ic88c1, b/481781189) - Sono state aggiunte nuove varianti non interattive di elementi di elenco standard ed elementi di elenco segmentati che seguono le specifiche di Material Expressive. La versione non espressiva è stata ritirata. (Ide4de, b/491994186)
- Per Subspace, il parametro
allowUnboundedSubspaceè ora deprecato e nascosto. Ora il comportamento illimitato deve essere ottenuto utilizzandoSubspaceModifier.requiredSizeIn(maxWidth=Dp.Infinity,maxHeight=Dp.Infinity,maxDepth=Dp.Infinity) nel modificatore Subspace. Il parametroallowUnboundedSubspaceè stato rimosso daFollowingSubspace. (Ia72ae, b/433624021) Session.createè stato convertito in una funzione di sospensione. (I5d27f)- È stato aggiunto
SubspaceModifier.spatializedAudioOutput, che consente la riproduzione audio spazializzata tramiteExoPlayero tramite unSoundEffectPlayer(I46697, b/489421980, b/497867019). ComponentActivity.requestHomeSpace()erequestFullSpace()aggiornati per restituireSpaceRequestResultper la verifica dello stato. (If1672)AnchorEntityaggiornato con il nomeAnchorSpace(Ifa95e, b/513619219)- Metodo
fromResourcesenza limitazioni daSpatialGltfModelSource(I1f5a1, b/503047416) - I membri di
SubspaceSemanticsMatchersono pubblici: la proprietàdescription, i metodi di fabbrica complementari (expectValue,keyIsDefined,keyNotDefined), le funzioni membro (matches,matchesAny) e gli operatori (and,or,not). (I972a4, b/460427288) - Aggiornamento di
SubspaceModifier.semantics,SubspaceModifier.testTag,SubspaceSemanticsInfo,SubspaceSemanticsModifierNodeper utilizzare tipi di semantica spaziale selezionati. (I80dea, b/460427288) - È stato rinominato
positioninaligninSpatialAlignmente sono stati rimossi i singoli metodi di offset direzionale a favore di un'APIalignunificata. (I9bdb2, b/479805937) - Sono state rimosse le API della modalità Spazio deprecate da
SpatialConfiguration. (I1ef5c, b/458712461) - Introdotto
SubspaceSemanticsConfiguration. Questa è una configurazione delle proprietà semantiche per un nodo spaziale. Questa classe espone in modo sicuro i metodi di query per la semantica 3D senza rivelare le funzionalità semantiche 2D di base ai consumatori esterni. (Id025e, b/460427288) - È stato introdotto
SubspaceSemanticsPropertyReceiver: un wrapper dedicato che limita le proprietà del contenitore di layout 3D ai campi validi (inizialmentetestTagecontentDescription). (I5cf5c, b/460427288)
Correzioni di bug
- È stato aggiornato
hasContentDescriptiondel modificatore semantico in modo che la corrispondenza di sottostringa sia impostata per impostazione predefinita. (I08214) - È stato aggiunto
FollowBehavior.ExponentialDecay()con limitazioni, che fornisce un comportamento di follow morbido guidato dalla fisica elastica. (I7449c, b/485639909, b/500493335)
La maggior parte delle API sarà interessata da questa modifica. Nello specifico, LocalSession CompositionLocal e tutti gli CompositionLocals che dipendono da LocalSession (ad es. LocalSpatialConfiguration, LocalSpatialCapabilities e così via) ora verranno risolti in null o nelle relative versioni non XR prima dell'inizializzazione di Session.
Una volta disponibile Session, la ricomposizione verrà attivata con lo stato corretto. (I0cfa4, b/514712835, b/514712835)
- È stata chiarita la documentazione per
ComponentActivity.requestHomeSpaceeComponentActivity.requestFullSpacein merito a comportamento di sospensione, annullamento e concorrenza. Sono stati aggiornati i test per verificare la propagazione diCancellationException. (I22f75, b/493289528)
Versione 1.0.0-alpha15
17 giugno 2026
androidx.xr.compose:compose:1.0.0-alpha15 e androidx.xr.compose:compose-testing:1.0.0-alpha15 sono state rilasciate. La versione 1.0.0-alpha15 contiene questi commit.
Modifiche alle API
ResizePolicye il vecchio modificatore ridimensionabile sono stati ritirati e sostituiti con un nuovo overloadSubspaceModifier.resizableeSubspaceModifier.transformingResizable. (I9e4bc)- API
SpatialGltfModelaggiornate: è stato aggiunto il supporto per il caricamento di modelli dalle risorse tramiteSpatialGltfModelSource.fromResource. La velocità è stata rinominataplaybackSpeedinSpatialGltfModelAnimationed è stato aggiunto un metodo resume().SpatialGltfModelStatus.Loaded e Loading sono ora oggetti. (I523de) rotateToLookAtUserè stata contrassegnata come API sperimentale. (I86c16)- La variabile protetta
targetCurrentPoseè stata spostata e rinominata in variabile localecurrentTargetPoseMeter. (Ia557c) - Aggiorna i kdoc
SpatialPaneleSpatialExternalSurfaceper includere la posizione in cui viene eseguito il rendering dell'oggetto all'interno delle dimensioni del layout (I72104) - Logica di caricamento
SpatialGltfModelincapsulata inSpatialGltfModelStatee comportamento in caso di errore chiarito. (Ibe98b) - Chiarimento di
depthinSubspaceModifer.sizekdoc (I0f84f)
Versione 1.0.0-alpha14
19 maggio 2026
androidx.xr.compose:compose:1.0.0-alpha14 e androidx.xr.compose:compose-testing:1.0.0-alpha14 sono state rilasciate. La versione 1.0.0-alpha14 contiene questi commit.
Modifiche alle API
- È stato introdotto
transformingMovableper il movimento 3D gestito dal sistema predefinito ed è stato introdotto un nuovo overload permovableper gestire i comportamenti di movimento personalizzati. (I50960) - Il campo
SpatialGltfModel.fromData()è stato rimosso. (I4d083) - È stata aggiunta una nuova interfaccia del nodo modificatore,
SubspaceMeasuredSizeAwareModifierNode, che fornisce un callbackonRemeasureddopo il passaggio della misura.SubspaceLayoutAwareModifierNodeora estende questa nuova interfaccia. Il modificatoreonSizeChangedè stato aggiornato per utilizzareonRemeasured, in modo che il callback venga attivato subito dopo la misurazione, non dopo il posizionamento. (Iafbae) InteractionPolicyaggiornato aInterface(I0ff30)- Aggiornamento di Compose
compileSdkall'API 37. Ciò significa che quando utilizzi Compose è richiesta una versione minima di AGP 9.2.0. (Id45cd) - Aggiornamento di
Sizedocumenti KDocs (Iefa9a)
Versione 1.0.0-alpha13
6 maggio 2026
androidx.xr.compose:compose:1.0.0-alpha13 e androidx.xr.compose:compose-testing:1.0.0-alpha13 sono state rilasciate. La versione 1.0.0-alpha13 contiene questi commit.
Modifiche alle API
- L'API Orbiter è in attesa di ulteriori modifiche. Ti consigliamo di eliminare le notifiche di ritiro per gli Orbiter e di tenere d'occhio le modifiche a Orbiter nelle prossime release.
- Chi utilizza
SceneCoreEntityper il rendering dei glTF deve assicurarsi di passaresession.scene.activitySpaceal parametroparentdella chiamataGltfModel.createper garantire il rendering dei glTF. - Aggiunta dell'API
SpatialGltfModelper consentire agli sviluppatori di aggiungere file GLTF alle loro app Compose for XR. Gli sviluppatori possono anche eseguire query su animazioni e nodi all'interno dei modelli Gltf. (I8b542, b/495422586) - Modifiche
SceneCoreEntitySizeAdapterdalla classe all'interfaccia (I5a784, b/475292310) SurfaceProtectionè stato rinominato inSpatialExternalSurfaceProtection. Aggiornamento diSpatialExternalSurfacekdoc (Ifad0a, b/485231082)- Depreca
currentWindowAdaptiveInfoe introduci la versione 2 (I40ecf, b/424442112) - Il modificatore
resizableè ora pubblico e applicabile ai gruppi (ad es.SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787) - Il modificatore
movableè ora pubblico. Al momento, questo modificatore funziona bene perSpatialPanelseSpatialExternalSurface; tuttavia, l'intenzione è di supportarlo bene per tutti iSubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063) SpatialEnterTransitioneSpatialExitTransitioncontrassegnati come@Immutable(If1710, b/487757837)- L'API
SpatialGltfModelè contrassegnata come con limitazioni per questa release in attesa di ulteriori test. (Ibf003, b/466090694) - Rinominato
DeviceTrackingMode.LAST_KNOWNinSPATIAL_LAST_KNOWN(con un fallback ritirato), aggiuntoINERTIAL_LAST_KNOWNper il monitoraggio a 3 gradi di libertà e aggiuntoTRACKING_DEGRADEDaTrackingState. (Ie661c, b/445466590) - Rimozione di
SpatialLayoutSpacerritirato (I7b36c) - Rimozione dell'API di padding deprecata (If1886)
- Aggiunta di
floatRangeai valori di distorsione. Rimosso il valore predefinito perLayoutDirection(I9d74e)
Correzioni di bug
- Sono stati aggiunti esempi di codice e documentazione KDoc per
SpatialColumn,SpatialRoweSpatialCurvedRow. (Iaf54f, b/495777633)
Versione 1.0.0-alpha12
25 marzo 2026
androidx.xr.compose:compose:1.0.0-alpha12 e androidx.xr.compose:compose-testing:1.0.0-alpha12 sono state rilasciate. La versione 1.0.0-alpha12 contiene questi commit.
Modifiche alle API
- Aggiungi l'API
SpatialGltfModele le APISpatialGltfModelAnimationper eseguire il rendering dei glTF e controllare le animazioni.SpatialGltfModelStateè stato modificato inAutoCloseablee ora deve essere chiuso per liberare le risorse. (I11fde, b/466065486, b/481379924). Tuttavia, l'APISpatialGltfModelè contrassegnata come limitata per questa release in attesa di ulteriori test. (Ibf003, b/466090694) - È stato aggiunto un overload vuoto ritirato per
SubspaceModifier.rotate. (Idceb6) - La funzione
SpatialSmoothFeatheringEffectè stata rinominataspatialSmoothFeatheringEffecte spostata in un modulo di disegno. È stato aggiornato il valore di sfumatura predefinito diSpatialExternalSurfacea null, che imita la vecchia funzionalità ZeroFeatheringEffect. (I5fdaa, b/460426800) - Contatto rimosso:
onPointSourceParamsAvailable. A breve sarà disponibile un'altra API di spazializzazione audio. (I86507, b/458513439) - È stato aggiunto il comportamento RTL per i modificatori dello spazio secondario di offset. È stato aggiunto anche
absoluteOffsetper ignorare la direzione del layout. (I30e4b, b/474409165)
Versione 1.0.0-alpha11
25 febbraio 2026
androidx.xr.compose:compose:1.0.0-alpha11 e androidx.xr.compose:compose-testing:1.0.0-alpha11 sono state rilasciate. La versione 1.0.0-alpha11 contiene questi commit.
Nuove funzionalità
- Aggiunta del parametro
SuperSamplingaSpatialExternalSurfaces(Icd4d1)
Problemi noti
- Un problema con
SurfaceEntityin SceneCore può causare l'arresto anomalo delle app durante la creazione di istanze diSpatialExternalSurface. Questo problema è stato risolto inandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13,androidx.xr.compose:compose:1.0.0-alpha12e nelle versioni successive. Le app interessate devono essere aggiornate alle versioni più recenti.
Modifiche alle API
- Modifiche al padding del modificatore di sottospazio per la consapevolezza della direzione del layout. (I53e25)
SpatialCapabilitiesè ora sigillato e non può essere esteso. (I07aef)- Le API
SpatialRoweSpatialColumnche accettano un parametroSpatialAlignmentgenerico sono deprecate; utilizza invece le API che accettanoverticalAlignmentohorizontalAlignmentrispettivamente perSpatialRoweSpatialColumn. (Iec390) - Combinazione di API di funzioni di overloading
SubspaceLayout(Idd30a) SubspaceModifier.lookAtUserè stato rinominato inrotateToLookAtUsere il parametroupinupDirection. (Icafb8)- Rendere
SpatialRowuna funzione inline (Ia2f20) - Rendere
SpatialColumnuna funzione inline (I681be) - Rimossa l'API per i cartelloni pubblicitari (Ib76cd)
Versione 1.0.0-alpha10
28 gennaio 2026
androidx.xr.compose:compose:1.0.0-alpha10 e androidx.xr.compose:compose-testing:1.0.0-alpha10 sono state rilasciate. La versione 1.0.0-alpha10 contiene questi commit.
Modifiche alle API
- Rimozione dell'API deprecata -
ApplicationSubspace(Ia6596, b/468345186) - Aggiornamento di
SpatialShapea un'interfaccia sigillata (I7e3f5, b/460426800) - Rimozione delle API deprecate in
SpatialAlignment. (Ib0b61, b/468011887) - Ritiro di
SpatialLayoutSpacere introduzione diSpatialSpacer. (I2ebf3, b/466071383) - L'API
UserSubspaceè stata aggiornata per sostituire il termine "blocco pigro" con "blocco soft". (I9ded1, b/464035984)
Versione 1.0.0-alpha09
3 dicembre 2025
androidx.xr.compose:compose:1.0.0-alpha09 e androidx.xr.compose:compose-testing:1.0.0-alpha09 sono state rilasciate. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
- Aggiunta dei modificatori
LookAtUsere Billboard, che consentono ai contenuti di essere sempre rivolti verso l'utente. (I49b99) - Aggiunge la possibilità di impostare un
InteractionPolicysuSpatialExternalSurfaceseSpatialPanels, consentendo il rilevamento di clic e altri eventi di input 3D. (Iae155) - Aggiunta di dimensioni e sovraccarico del modificatore
requiredSizecon larghezza, altezza e profondità come valori Dp. (I92f79) - L'interfaccia di
ParentLayoutParamsModifierora si estende aDelegatableSubspaceNode. (I1a6d4) ApplicationSubspaceè deprecato a favore dell'API Subspace.- Il comportamento dell'API Subspace viene modificato in modo da fornire solo uno spazio secondario a livello di applicazione nella posa e nella scala consigliate.
- Viene introdotta l'API
PlanarEmbeddedSubspaceper fornire sottospazi incorporati in contesti 2D. (Id3343)
- È stato aggiunto il flag
shouldAutoInvalidateall'APISubspaceModifier.Node. (I93902) - Aggiunta di
required(Size|Width|Depth|Height)nelle API che consentono agli sviluppatori di limitare le dimensioni di un@SubspaceComposablea un intervallo specifico, ignorando i vincoli di misurazione in entrata del genitore. (Ifaa78) - È stato aggiunto
SubspaceModifier.onSizeChangedche fornisce un semplice callback mirato per consentire agli sviluppatori di reagire quando le dimensioni di un@SubspaceComposablecambiano. (I994f9) - Rimozione dell'API Volume. L'API
SceneCoreEntitydeve essere utilizzata al posto dell'API Volume. (I4162b) - Dividi
SubspaceLayoutModifierNode.requestRelayoutininvalidateMeasurement/invalidatePlacement. (I14805) - È stata aggiunta l'API
SpatialGltfModelche consente agli sviluppatori di eseguire il rendering di glTF in Compose. (Icc91f) - È stata introdotta l'API componibile
SpatialGltfModelper il rendering semplice dei glTF (Iade67)
Correzioni di bug
- È stato corretto un bug del layout in
SceneCoreEntity. Ora dovrebbe rispettare correttamente i vincoli. (I11bb8) - Esegui il downgrade dei moduli jxr-compose a
Compile sdk = 34(I2d5db)
Versione 1.0.0-alpha08
22 ottobre 2025
androidx.xr.compose:compose:1.0.0-alpha08 e androidx.xr.compose:compose-testing:1.0.0-alpha08 sono state rilasciate. La versione 1.0.0-alpha08 contiene questi commit.
Modifiche alle API
ResizePolicymodificato per accettareonResizeStart,onResizeUpdateeonResizeEnd. (I7e21f)
Correzioni di bug
- Evita l'arresto anomalo durante l'eliminazione di un'attività con uno spazio secondario. (I595a1)
Versione 1.0.0-alpha07
24 settembre 2025
androidx.xr.compose:compose:1.0.0-alpha07 e androidx.xr.compose:compose-testing:1.0.0-alpha07 sono state rilasciate. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API
- Documenti KDocs migliorati per
SpatialMainPanel. (I27b70, b/444467891) - È stato introdotto
SpatialArrangementper disporre gli elementi secondari lungo l'asse principale nei layout 3D comeSpatialRoweSpatialColumn. Questa nuova API offre le opzioni di disposizione familiari di Compose 2D, tra cuiStart,End,Center,SpaceBetween,SpaceAroundeSpaceEvenly, con supporto completo per le direzioni del layout LTR e RTL. (I7db38, b/436289959) - È stata aggiunta un'interfaccia di base per
SubspaceModifier.Nodeper migliorare la sicurezza dei tipi e l'usabilità delle interfacce di estensione, ad esempioCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(interno) (Iede00, b/440599394, b/440599394)
- Rimuovi le limitazioni per
SpatialExternalSurface(I33315, b/439646773) - Introduci
SubspaceModifiernei composable di Subspace e sostituisci il parametro constraints conSubspaceModifierconSubspaceModifiersrelativi alle dimensioni. SeallowUnboundedSubspaceè true, gli spazi secondari possono comunque avere vincoli illimitati. (Ib06e6, b/433331675) - Ritiro di
SubspaceModifiersmobili e ridimensionabili ora cheDragPolicy()eResizePolicy()fanno parte delle APISpatialPaneleSpatialExternalSurface(I397bf, b/437924639) - È stato aggiunto il supporto per
LayoutDirectionnei layout spaziali. Composable utilizzandoSpatialAlignmentora posizionerà correttamente gli elementi nei contesti LTR e RTL. (I964bb, b/436300273) - Aggiungi i parametri Ridimensionabile e Spostabile alle API
Panelper assicurarti che questi comportamenti possano essere applicati solo ai contenitori supportati. (Id491c) - Sono stati aggiunti
sizeIn,widthIn,heightIn,depthInSubspaceModifiersche ti consentono di impostare vincoli minimi e massimi esatti per larghezza, altezza e profondità. (I1af09, b/433330761)
Versione 1.0.0-alpha06
13 agosto 2025
androidx.xr.compose:compose:1.0.0-alpha06 e androidx.xr.compose:compose-testing:1.0.0-alpha06 sono state rilasciate. La versione 1.0.0-alpha06 contiene questi commit.
Correzioni di bug
- Ricrea
ComposeXrOwnerLocalsquando il proprietario del ciclo di vita viene eliminato. (9123ce1)
Versione 1.0.0-alpha05
30 luglio 2025
androidx.xr.compose:compose:1.0.0-alpha05 e androidx.xr.compose:compose-testing:1.0.0-alpha05 sono state rilasciate. La versione 1.0.0-alpha05 contiene questi commit.
Nuove funzionalità
- È stata resa pubblica la classe di annotazione
SubspaceComposable. (Ic2a34, b/399432430) - Due nuovi composable
SpatialExternalSurfaceche rappresentano sfere a 180 e 360 gradi. (I40ef2, b/391705799) - Aggiunta di
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147) - È stata aggiunta l'API
SceneCoreEntityper migliorare l'interoperabilità traSceneCoree Compose for XR. (I50bb3, b/423020989) - Fornita l'API
GravityAlignedsubspaceper supportare la funzionalità Non scalare eGravityAligned(I07359)
Modifiche alle API
SpatialDialog()seguirà la configurazione della pressioneSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)- Aggiorna
minimumPanelDimensiona una nuova dimensione predefinita diDimensions(0.1f, 0.1f, 0.1f)a causa della sua rappresentazione in metri. (Ib852a) - Gli spazi secondari e gli Orbiter ora mantengono il loro stato interno nello spazio della casa e quando l'app è in background. In modalità spazio Home, Subspace configurerà comunque la sua scena in preparazione del passaggio alla modalità Spazio intero. (I40317, b/416037751)
SpatialDialogsora manterrà il suo stato quando l'app è in background. (I6aa56)ApplicationSubspaceora erediterà la scala e la posizione consigliate dal sistema. (I4565f, b/418834194)- È stato aggiunto un messaggio di errore migliore e l'errore viene attivato prima quando viene utilizzato un
SubspaceComposablein un contesto nonSubspaceComposable. (Iee2ae, b/416484684) - Aggiornamento di
ExperimentalSubspaceVolumeApida Avviso a Errore perché gli avvisi vengono spesso trascurati quando si utilizzano in modo improprio le API componibili. (I427aa, b/424864286) - Subspace e
ApplicationSubspaceora sono vincolati darecommendedContentBoxInFullSpace. In precedenza, era limitato dal campo visivo diSpatialUser. (I41015, b/423074142) - Aggiorna
SpatialElevationper utilizzare la dimensione minima in modo da non utilizzare più la dimensione hardcoded (I2dbe6, b/427785338) - Aggiorna il modo in cui eseguiamo la simulazione di
SpatialAcitivityPanelper aggiornarlo quando viene modificata una variabile chiave. (I0f64d, b/427999029) - Rimuovi
VolumeConstraints.Unboundede imposta i valori predefiniti dei vincoli sull'equivalente. (Ie24ec, b/407938414) SpatialFeatheringSizenon è più pubblico (I1c15b, b/399432430)- È stato rinominato XR
PlaceableinSubspacePlaceableper distinguerlo daPlaceabledi Compose. (I74874) - Rimozione delle impostazioni di Orbiter e aggiunta di
shouldRenderInNonSpatialcome nuovo parametro. Inoltre, rimozione della classeEdgeOffsete aggiunta diorbiterOffsetTypecome nuovo parametro per consolidare le funzioniOrbiter(). Oltre a rinominareOrbiterEdgeinContentEdge. (Iebf3d) Measurableè stato rinominato inSubspaceMeasurableper distinguere il tipo dal tipoMeasurabledi Compose. (I9726c)- Rinomina
MeasureResultinSubspaceMeasureResult(I9f34d) - È stata rimossa l'API
setSubspaceContenta favore dell'utilizzo disetContentdi Compose con un componibileSubspace. (Ifff4c, b/421427391, b/421427391) MeasurePolicyè stato rinominato inSubspaceMeasurePolicy. (I37a9b, b/422553904)- Trasforma
SubspaceSemanticsInfoin un'interfaccia sigillata perché non potremo aggiungere membri senza i valori predefiniti. (I372f9, b/423704068) - Documentazione di
SpatialExternalSurfaceaggiornata,ContentSecurityLevelrinominato inSurfaceProtection(I3c460, b/420982808) - Fornito costruttore sovraccarico per il modificatore mobile che consente l'ancoraggio. (Ic0c70)
- Aggiungi un altro fornitore di posizione per le descrizioni comando, in modo che gli sviluppatori possano controllare se la descrizione comando viene posizionata sopra, sotto, a sinistra o a destra dell'ancora. Aggiungi un'API che accetta una forma per i cursori, in modo da poter fornire forme più personalizzate. (Ie513c, b/374766087, b/418854637)
CoreEntityrimosso comePublishedApi(Ifee05)
Correzioni di bug
- È stato risolto il problema per cui
SpatialDialoglampeggiava durante il rendering. (Ife73c, b/401619909) - È stato risolto il problema per cui
SpatialDialognon poteva oscurare il riquadro delle attività. (I8ca6c, b/367442109) - Correzione della finestra di dialogo XR che non mostra alcuni contenuti (I17cd5, b/418062437)
- È stato risolto il problema per cui
SpatialPopupveniva chiuso quando si faceva clic all'interno dei contenuti. (If262c, b/417245722) - È stato risolto il problema per cui, quando si concatenava
resizable().movable(), il riquadro spaziale non veniva ridimensionato correttamente in base alle nuove dimensioni. (I02ee3, b/422264230) - È stato corretto il problema di sovrapposizione di
topBarcon il menu inSpatialComposeVideoPlayer(Id33bc, b/427168167) - È stato corretto il rendering del raggio dell'angolo fisso. (I975fe, b/428261830)
Versione 1.0.0-alpha04
7 maggio 2025
androidx.xr.compose:compose:1.0.0-alpha04 e androidx.xr.compose:compose-testing:1.0.0-alpha04 sono state rilasciate. La versione 1.0.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stata aggiunta l'interfaccia
CompositionLocalConsumerSubspaceModifierNodeper consentire ai tipiSubspaceModifierpersonalizzati di accedere ai valori locali della composizione. - È stata aggiunta una nuova API
SpatialPanelche segue lo stile di implementazione di ComposeAndroidViewe ritira la precedenteViewBased SpatialPanel. - È stato aggiunto l'oggetto complementare
VolumeConstraints.Unbounded, che rappresenta i vincoli illimitati. - È stato aggiunto
SubspaceModifier.onPointSourceParamsper consentire un'origine audio spazializzata. - È stato aggiunto un
ApplicationSubspacepubblico, che offreVolumeConstraintsfacoltative per definire un'area 3D in cui l'app può eseguire il rendering dei contenuti spaziali. Per impostazione predefinita, se non vengono specificati vincoli, il sottospazio sarà delimitato dal campo visivo attuale dellaSpatialUserin larghezza e altezza. Gli utenti possono fornire vincoli da utilizzare se non è possibile determinare il campo visivo. In caso contrario, vengono utilizzati i valori predefiniti di larghezza e altezza del campo visivo. - È stato aggiunto
SpatialExternalSurface, che può essere utilizzato per il rendering di contenuti stereoscopici.SpatialExternalSurfaceè personalizzabile con modificatori (tranne alpha) e un effetto sfumatura del bordo. - È stato aggiunto un nuovo modificatore di sottospazio
pointerHoverIconche consente agli utenti di impostare l'icona per il puntatore spaziale.
Modifiche alle API
- Rimossa la limitazione
RequiresApi(34)su tutti i pacchetti Jetpack XR. Questa limitazione era ridondante in quanto Jetpack XR è attualmente disponibile solo su dispositivi con livello API 34+. (Iae0f8) - I progetti rilasciati con Kotlin 2.0 richiedono KGP 2.0.0 o versioni successive. (Idb6b5)
- La gestione del pulsante Indietro ora funzionerà sui riquadri spaziali senza attività incorporate. Affinché la gestione del pulsante Indietro funzioni, devi specificare
android:enableOnBackInvokedCallback="true"nel manifest Android. - La gestione della cronologia ora funziona sulle finestre di dialogo spaziali. Affinché la gestione del backhandling funzioni, devi specificare
android:enableOnBackInvokedCallback="true"nel manifest Android. - Le
SpatialPanelbasate sulla composizione e sulla visualizzazione ora possono dimensionarsi in base ai loro contenuti. - Ora gli sviluppatori possono impostare i propri valori
SpatialElevationLevelpersonalizzati e non sono limitati ai livelli predefiniti. - Il livello di elevazione dell'orbiter ora può essere personalizzato tramite il parametro
elevation. - Ora il sottospazio può essere delimitato dal campo visivo della
SpatialUserin larghezza e altezza per impostazione predefinita. Se non è possibile determinare il campo visivo, vengono utilizzati i valori predefiniti di larghezza e altezza del campo visivo. - Sono stati aggiunti nuovi callback
onMoveStarteonMoveEndal modificatoreMovable. I callbackonMoveStarteonMoveEndvengono chiamati quando l'utente inizia e termina lo spostamento di un elemento componibile dello spazio secondario con il modificatore spostabile. - Il parametro
nameè stato rimosso dalle API spaziali comeSpatialRoweSpatialPanel. Per il debug degli alberi di composizione spaziale, utilizza inveceSubspaceModifier.testTag. - È stato rimosso un overload non supportato di
SpatialPopupche ha solospatialElevationLevelecontent. Utilizza l'interfaccia che supportaonDimissRequest. - Il callback
onPoseChangedel modificatore Movable è stato rimosso. Usa invece il descrittoreonMove. SubspaceModifiersnon applicherà più i suoi effetti se è scollegato o in fase di scollegamento.- L'API
SpatialRowesistente è stata suddivisa inSpatialRoweSpatialCurvedRow. Se in precedenza utilizzavi il parametrocurveRadiusdiSpatialRow, ora utilizzaSpatialCurvedRow, che offre lo stesso comportamento. MainPaneleActivityPanelnon hanno più barre del titolo quando vengono eseguiti su un'immagine di sistema recente simile.- I modificatori alfa e di scala ora sono cumulabili e moltiplicano i loro valori per il valore alfa o di scala finale applicato.
- Il
onPoseChangecallback del modificatore Movable è stato ottimizzato per eseguire un movimento della posa più fluido. - I modificatori mobili e ridimensionabili ora eseguiranno i callback sul thread principale per garantire che le modifiche dello stato attivino la ricomposizione.
- È stata aggiunta l'osservazione dello stato alle fasi di layout e misurazione per garantire che le modifiche dello stato in
SubspaceLayoutattivino il ricalcolo del layout. - Aggiornamenti della catena di modificatori ottimizzata per riutilizzare meglio i modificatori esistenti.
Correzioni di bug
- La dissolvenza in nero si interrompe quando viene visualizzato un
SpatialDialog. (Ic4594) - Le richieste di riorganizzazione effettuate mentre i nodi modificatori sono scollegati verranno ora ignorate.
- Sono state rimosse le fasi di riorganizzazione attivate dai modificatori Spostabile e Ridimensionabile.
- È stato corretto un arresto anomalo nel composable
MainPanel()che si verificava quando una delle dimensioni era impostata su zero, direttamente o durante un calcolo del layout, ad esempio un calcoloSpatialRow/SpatialColumn. Il riquadro verrà invece nascosto. Tieni presente che questa correzione riguarda in modo specifico gli arresti anomali durante la fase di layout; il ridimensionamento del riquadro a zero tramite l'interazione dell'utente verrà gestito separatamente. Il riquadro nascosto non dispone di funzionalità dell'interfaccia utente. - È stato risolto il problema relativo a
maintainAspectRatiodel modificatore ridimensionabile. Le proporzioni dovrebbero essere mantenute. - Risolto un problema relativo agli spazi secondari nidificati, che venivano posizionati in modo errato per un singolo frame.
- È stato risolto il problema a causa del quale a volte gli angoli arrotondati non venivano applicati quando avrebbero dovuto.
NestedSubspacesnon verrà più visualizzato per un fotogramma nella posizione errata.
Versione 1.0.0-alpha03
26 febbraio 2025
androidx.xr.compose:compose:1.0.0-alpha03 e androidx.xr.compose:compose-testing:1.0.0-alpha03 vengono rilasciati senza modifiche degne di nota rispetto all'ultima versione alpha. La versione 1.0.0-alpha03 contiene questi commit.
Versione 1.0.0-alpha02
12 febbraio 2025
androidx.xr.compose:compose:1.0.0-alpha02 e androidx.xr.compose:compose-testing:1.0.0-alpha02 sono state rilasciate. La versione 1.0.0-alpha02 contiene questi commit.
Nuove funzionalità
- Il pannello delle attività ora può oscurare i suoi contenuti quando viene attivato un dialogo spaziale.
- L'API
Orbiterora è utilizzabile nei contestiSubspaceComposablee collegherà gli orbiter al relativo elemento componibile principale più vicino basato suSubspaceLayout. - È stato introdotto
LayoutCoordinatesAwareModifierNodeper consentire modificatori personalizzati basati sul posizionamento. - Sono stati aggiunti metodi del ciclo di vita di collegamento/scollegamento a
SubspaceModifier.Node. - Aggiunto
scaleWithDistanceal modificatore mobile. QuandoscaleWithDistanceè attivato, l'elemento dello spazio secondario spostato si ingrandisce o si riduce. Manterrà anche qualsiasi scala esplicita che aveva prima del movimento.
Modifiche alle API
SessionCallbackProviderrimosso a favore diSpatialCapabilities.
Altre modifiche
- Ridotto
minSDKa 24. Tutte le API Jetpack XR continuano a richiedere l'API 34 in fase di runtime. - I costruttori
OrbiterEdgeOffset.inner,EdgeOffset.outereEdgeOffset.overlapnon sono più metodi@Composable, il che consente di utilizzarli in contesti non componibili. - Aggiorna i livelli di elevazione spaziale in modo che corrispondano alle ultime specifiche UX.
- Implementa l'interfaccia
SubspaceSemanticsInfoinMeasurableLayout. SubspaceModifierElementè stato rinominato inSubspaceModifierNodeElement.
Correzioni di bug
- Correzioni per stabilizzare l'ordinazione di
SubspaceModifier.SubspaceModifierdovrebbe comportarsi in modo più affidabile. I modificatori Sposta, Ruota, Scala, Spostabile e Ridimensionabile ora dovrebbero essere utilizzabili in qualsiasi ordine.
Versione 1.0.0-alpha01
12 dicembre 2024
androidx.xr.compose:compose-*1.0.0-alpha01 è stato rilasciato.
Funzionalità della versione iniziale
Release iniziale per gli sviluppatori di Jetpack Compose per XR. Utilizza concetti di Compose familiari come righe e colonne per creare layout dell'interfaccia utente spaziale in XR, sia che tu stia eseguendo il porting di un'app 2D esistente in XR sia che tu stia creando una nuova app XR da zero. Questa libreria fornisce composable spaziali e di sottospazio, come pannelli spaziali e orbiter, che ti consentono di posizionare la tua UI 2D Compose o basata su Views in un layout spaziale. Introduce il componente componibile Volume subspace, che consente di posizionare le entità SceneCore, come i modelli 3D, rispetto alla UI. Scopri di più in questa guida per gli sviluppatori:
Subspace: questo elemento componibile può essere posizionato ovunque all'interno della gerarchia dell'UI dell'app, consentendoti di mantenere i layout per l'UI 2D e spaziale senza perdere il contesto tra i file. In questo modo è più facile condividere elementi come l'architettura delle app esistenti tra XR e altri fattori di forma senza dover sollevare lo stato attraverso l'intero albero dell'interfaccia utente o riprogettare l'app.SpatialPanel: un componente componibile spaziale che consente di visualizzare i contenuti dell'app. Ad esempio, puoi visualizzare la riproduzione video, immagini statiche o qualsiasi altro contenuto in un pannello spaziale.
Orbiter: un orbiter è un componente dell'interfaccia utente spaziale. È progettato per essere collegato a un pannello spaziale corrispondente e contiene elementi di navigazione e azioni contestuali correlate a quel pannello spaziale. Ad esempio, se hai creato un pannello spaziale per visualizzare contenuti video, puoi aggiungere i controlli di riproduzione video all'interno di un orbiter.
Volume: posiziona le entità SceneCore, come i modelli 3D, rispetto alla tua UI.
Layout spaziale: puoi creare più pannelli spaziali e posizionarli all'interno di un layout spaziale utilizzando
SpatialRow,SpatialColumn,SpatialBoxeSpatialLayoutSpacer. UtilizzaSubspaceModifierper personalizzare il layout.Componenti dell'interfaccia utente spaziale: questi elementi possono essere riutilizzati nell'interfaccia utente 2D e i relativi attributi spaziali saranno visibili solo quando le funzionalità spaziali sono attive.
SpatialDialog: il pannello si sposta leggermente indietro in profondità Z per visualizzare una finestra di dialogo in rilievo.SpatialPopUp: Il pannello si sposta leggermente indietro in profondità Z per visualizzare un popup in rilievoSpatialElevation:SpatialElevationLevelpuò essere impostato per aggiungere l'altitudine.
SpatialCapabilities: le funzionalità spaziali possono cambiare man mano che gli utenti interagiscono con la tua app o il sistema o possono persino essere modificate dalla tua app, ad esempio passando a Spazio Home o Spazio intero. Per evitare problemi, la tua app deve verificare la presenza di
LocalSpatialCapabilities.currentper determinare quali API sono supportate nell'ambiente corrente.isSpatialUiEnabled: elementi dell'interfaccia utente spaziale (ad es. SpatialPanel)isContent3dEnabled: oggetti 3DisAppEnvironmentEnabled: l'ambienteisPassthroughControlEnabled: se l'applicazione può controllare lo stato passthroughisSpatialAudioEnabled: audio spaziale
Problemi noti
- Attualmente è richiesto un minSDK di 30 per utilizzare Jetpack Compose per XR. Come soluzione alternativa, puoi aggiungere la seguente voce del manifest
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>per poter eseguire la build e l'esecuzione con un minSDK di 23. - Le app Jetpack XR al momento richiedono l'autorizzazione
android.permission.SCENE_UNDERSTANDINGin AndroidManifest. - Quando un'app viene avviata direttamente in Schermo intero utilizzando la proprietà
PROPERTY_XR_ACTIVITY_START_MODEnel manifest, le attività/applicazioni vengono inizialmente aperte in Spazio personale prima di passare a Schermo intero. - I glTF nei composable Volume potrebbero inizialmente sfarfallare nella posizione sbagliata.
- L'utilizzo di una finestra di dialogo spaziale in un pannello spostato in modo significativo sposterà i contenuti nella direzione sbagliata.