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ą też widoki. Jeśli używasz elementu setSubspaceContent
w MainActivity, umieść istniejący widok w 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 tworzeniem wiadomości. 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
Użyj elementu ComposeView
w układzie XML, aby dodawać elementy Composables i tworzyć nowe treści XR. Użyj opcji Wyświetl wiązanie lub findViewById
, aby znaleźć element ComposeView
w funkcji onCreateView
.
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 Jetpacku SceneCore. Jeśli chcesz użyć dźwięku przestrzennego w aplikacji opartej na Views, możesz nadal używać dotychczasowego kodu interfejsu użytkownika w Compose for XR lub pracować bezpośrednio z Session
Jetpacka 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 zdecydować, czy panele mają być przenośne lub czy mają mieć możliwość zmiany 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" )