Korzystanie z ramy Jetpack Compose na Androida to najlepszy sposób na wykorzystanie najnowszych osiągnięć w zakresie tworzenia interfejsu użytkownika na Androida i utrzymanie aplikacji na bieżąco ze sprawdzonymi metodami branżowymi.
Jeśli jednak nie przeprowadziłeś migracji i pracujesz nad przestrzennym wyświetlaniem aplikacji na podstawie Androida Views, możesz zastosować kilka metod.
Ponowne wykorzystanie dotychczasowych widoków w ramach paneli przestrzennych
Chociaż SpatialPanel
są częścią biblioteki Jetpack Compose for XR, obsługują one też Views. Gdy używasz w MainActivity widoku setSubspaceContent()
, umieść istniejący widok w elementach SpatialPanel
, jak pokazano w tym przykładzie.
setSubspaceContent { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this) } }
Korzystanie z interfejsów API Androida Views i Compose do zapewnienia interoperacyjności
Zapoznaj się ze wskazówkami dotyczącymi interoperacyjności między widokami a komponentami wiadomości e-mail. Ta dokumentacja zawiera informacje o współużywaniu tych platform oraz linki do przykładowych kodów, których możesz użyć.
Dodawanie paneli przestrzennych i orbiterów do istniejącego fragmentu za pomocą widoku kompozytowego
Aby dodać elementy składane i utworzyć nowe treści XR, użyj elementu ComposeView
w układzie XML. Aby znaleźć ComposeView
w funkcji onCreateView()
, użyj opcji Wyświetl wiązanie lub findViewById
.
Więcej informacji o wskazówkach 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 }
Praca bezpośrednio z biblioteką Jetpack SceneCore
Compose for XR opiera się na Jetpack SceneCore. Jeśli chcesz użyć spatializowania w aplikacji opartej na Views, możesz nadal używać dotychczasowego kodu interfejsu użytkownika w Compose for XR lub zamiast tego 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 ustawić, aby panele były przenośne lub umożliwiały zmianę rozmiaru, używając odpowiednich komponentów. Więcej informacji znajdziesz w artykule Dodawanie typowych zachowań do jednostek.
val panelContent = MyCustomView(this) val panelEntity = PanelEntity.create( session = xrSession, view = panelContent, pixelDimensions = PixelDimensions(500, 500), name = "panel entity" )