Korzystanie z platformy Android Jetpack Compose to najlepszy sposób na wykorzystanie najnowszych osiągnięć w dziedzinie tworzenia interfejsu użytkownika na Androida i zapewnienie, że aplikacja jest zgodna ze sprawdzonymi metodami branżowymi.
Jeśli jednak nie masz jeszcze za sobą migracji i pracujesz nad przestrzennym dostosowaniem aplikacji opartej na widokach Androida, możesz zastosować kilka metod.
Ponowne używanie istniejących widoków w panelach przestrzennych
Chociaż SpatialPanel jest częścią biblioteki Jetpack Compose for XR, akceptuje też widoki. Jeśli używasz Subspace w MainActivity, umieść istniejący widok w SpatialPanel, jak w tym przykładzie.
setContent { Subspace { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this@ActivityWithSubspaceContent) } } }
Korzystanie z interfejsów API interoperacyjności widoków Androida i Compose
Zapoznaj się ze wskazówkami dotyczącymi zgodności między widokami a Compose. W tej dokumentacji opisano, jak używać tych platform razem, i podano linki do przykładowych kodów, których możesz użyć.
Używanie ComposeView do dodawania paneli przestrzennych i orbit do istniejącego fragmentu
Użyj ComposeView w układzie XML, aby dodać elementy kompozycyjne i utworzyć nowe treści XR. Użyj View binding lub findViewById, aby znaleźć ComposeView w funkcji onCreateView().
Więcej informacji o wytycznych dotyczących 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 }
Bezpośrednia praca z biblioteką Jetpack SceneCore
Pakiet Compose for XR jest oparty na Jetpack SceneCore. Jeśli chcesz dodać dźwięk przestrzenny do aplikacji opartej na widokach, możesz nadal używać istniejącego kodu interfejsu w Compose for XR lub pracować bezpośrednio z Session Jetpack SceneCore.
Panele możesz tworzyć bezpośrednio z poziomu SceneCore za pomocą PanelEntity. Ustaw rozmiar panelu w metrach, używając dimensions, lub w pikselach, używając pixelDimensions. Możesz zdecydować, czy panele mają być ruchome i czy można zmieniać ich rozmiar, używając odpowiednich komponentów. Więcej informacji znajdziesz w artykule Dodawanie typowych zachowań do encji.
val panelContent = MyCustomView(this) val panelEntity = PanelEntity.create( session = xrSession, view = panelContent, pixelDimensions = IntSize2d(500, 500), name = "panel entity" )