Tworzenie interfejsu przestrzennego dla aplikacji opartych na widokach Androida

Odpowiednie urządzenia XR
Te wskazówki pomogą Ci tworzyć treści na te urządzenia XR.
Gogle XR
Przewodowe okulary 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 w branży.

Jeśli jednak nie przeprowadzisz migracji i pracujesz nad przestrzennym rozmieszczeniem elementów w aplikacji opartej na widokach Androida, możesz zastosować kilka podejść.

Ponownie wykorzystuj istniejące widoki w przestrzennych panelach

SpatialPanel są częścią biblioteki Jetpack Compose na potrzeby 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 korzystaniu z tych platform razem oraz linki do przykładowych kodów, których możesz użyć.

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