L'utilizzo del framework Android Jetpack Compose è il modo migliore per sfruttare gli ultimi progressi nello sviluppo della UI di Android e per verificare che la tua applicazione rimanga aggiornata con le best practice del settore.
Tuttavia, se non hai eseguito la migrazione e stai lavorando per spazializzare un'app basata su Android Views, puoi adottare alcuni approcci.
Riutilizza le visualizzazioni esistenti all'interno di SpatialPanel
Sebbene SpatialPanel faccia parte della libreria Jetpack Compose per XR, accetta anche le visualizzazioni. Quando utilizzi Subspace nella tua MainActivity, inserisci una visualizzazione esistente in un SpatialPanel come mostrato nell'esempio seguente.
setContent { Subspace { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this@ActivityWithSubspaceContent) } } }
Utilizza le API di interoperabilità di Android Views e Compose
Consulta le indicazioni sull'interoperabilità tra Views e Compose. Questa documentazione illustra l'utilizzo combinato di questi framework e contiene link ad esempi di codice che puoi utilizzare.
Utilizza una ComposeView per aggiungere pannelli spaziali e orbiter a un frammento esistente
Utilizza un ComposeView nel layout XML per aggiungere elementi componibili e creare nuovi contenuti XR. Utilizza View binding o findViewById per trovare
ComposeView nella funzione onCreateView().
Scopri di più sulle indicazioni relative a ComposeView.
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { val view = inflater.inflate(R.layout.example_fragment, container, false) view.findViewById<ComposeView>(R.id.compose_view).apply { // Dispose of the Composition when the view's LifecycleOwner // is destroyed setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { // In Compose world SpatialPanel(SubspaceModifier.height(500.dp).width(500.dp)) { Text("Spatial Panel with Orbiter") } } } return view }
Lavora direttamente con la libreria Jetpack SceneCore
Compose per XR si basa su Jetpack SceneCore. Se stai spazializzando un'app basata su Views, puoi continuare a utilizzare il codice UI esistente all'interno di Compose for XR o scegliere di lavorare direttamente con Session di Jetpack SceneCore.
Puoi creare pannelli direttamente da SceneCore utilizzando PanelEntity. Imposta le dimensioni del pannello in metri utilizzando dimensions o in pixel utilizzando pixelDimensions. Puoi scegliere di rendere i pannelli spostabili o ridimensionabili utilizzando i componenti corrispondenti. Per saperne di più, consulta Aggiungi un comportamento comune alle entità.
val panelContent = MyCustomView(this) val panelEntity = PanelEntity.create( session = xrSession, view = panelContent, pixelDimensions = IntSize2d(500, 500), name = "panel entity" )