Korzystanie z platformy Android Jetpack Compose to najlepszy sposób na wykorzystanie najnowszych osiągnięć w zakresie tworzenia interfejsu Androida i sprawdzenie, czy Twoja aplikacja jest zgodna ze sprawdzonymi metodami stosowanymi w branży.
Jeśli jednak nie przeprowadzisz migracji i pracujesz nad przestrzennym rozmieszczeniem aplikacji opartej na Androidzie, możesz zastosować kilka podejść.
Ponownie wykorzystaj istniejące widoki w SpatialPanels
SpatialPanel
są częścią biblioteki Jetpack Compose for XR, ale akceptują też widoki. Jeśli używasz Subspace
w pliku MainActivity, umieść istniejący widok w obiekcie SpatialPanel
, jak pokazano 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 do współdziałania widoków Androida i Compose
Zapoznaj się ze wskazówkami dotyczącymi interoperacyjności między widokami a Compose. Ta dokumentacja zawiera informacje o używaniu tych platform razem oraz linki do przykładowych kodów, z których możesz korzystać.
Używanie elementu ComposeView do dodawania paneli przestrzennych i orbiterów do istniejącego fragmentu
Użyj ComposeView
w układzie XML, aby dodać funkcje kompozycyjne i utworzyć nowe treści XR. Użyj View binding lub findViewById
, aby znaleźć ComposeView
w funkcji onCreateView()
.
Więcej informacji o ComposeView
wytycznych
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
Compose for XR działa na podstawie Jetpack SceneCore. Jeśli tworzysz aplikację opartą 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 w SceneCore za pomocą PanelEntity
. Ustaw rozmiar panelu w metrach za pomocą dimensions
lub w pikselach za pomocą pixelDimensions
. Możesz sprawić, że panele będą ruchome lub będzie można zmieniać ich rozmiar, używając odpowiednich komponentów. Więcej informacji znajdziesz w artykule Dodawanie do encji wspólnych zachowań.
val panelContent = MyCustomView(this) val panelEntity = PanelEntity.create( session = xrSession, view = panelContent, pixelDimensions = IntSize2d(500, 500), name = "panel entity" )