Tworzenie interfejsu użytkownika w przypadku aplikacji opartych na widokach Androida

Wypróbuj Compose
Jetpack Compose z pakietem Jetpack XR SDK to zalecany zestaw narzędzi interfejsu na Androida XR.

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"
)