Tworzenie interfejsu przestrzennego dla istniejących aplikacji opartych na widokach Androida

Odpowiednie urządzenia z XR
Te wskazówki pomogą Ci tworzyć treści na te typy urządzeń z XR.
Gogle XR
Przewodowe okulary XR

Korzystanie z platformy Android Jetpack Compose to najlepszy sposób na wykorzystanie najnowszych osiągnięć w dziedzinie tworzenia interfejsu użytkownika na Androida i zapewnienie, że aplikacja jest zgodna ze sprawdzonymi metodami branżowymi.

Jeśli jednak nie masz jeszcze za sobą migracji i pracujesz nad przestrzennym dostosowaniem aplikacji opartej na widokach Androida, możesz zastosować kilka metod.

Ponowne używanie istniejących widoków w panelach przestrzennych

Chociaż SpatialPanel jest częścią biblioteki Jetpack Compose for XR, akceptuje też widoki. Jeśli używasz Subspace w MainActivity, umieść istniejący widok w SpatialPanel, jak 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 interoperacyjności widoków Androida i Compose

Zapoznaj się ze wskazówkami dotyczącymi zgodności między widokami a Compose. W tej dokumentacji opisano, jak używać tych platform razem, i podano linki do przykładowych kodów, których możesz użyć.

Używanie ComposeView do dodawania paneli przestrzennych i orbit do istniejącego fragmentu

Użyj ComposeView w układzie XML, aby dodać elementy kompozycyjne i utworzyć nowe treści XR. Użyj View binding lub findViewById, aby znaleźć ComposeView w funkcji onCreateView().

Więcej informacji o wytycznych 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
}

Bezpośrednia praca z biblioteką Jetpack SceneCore

Pakiet Compose for XR jest oparty na Jetpack SceneCore. Jeśli chcesz dodać dźwięk przestrzenny do aplikacji opartej 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 z poziomu SceneCore za pomocą PanelEntity. Ustaw rozmiar panelu w metrach, używając dimensions, lub w pikselach, używając pixelDimensions. Możesz zdecydować, czy panele mają być ruchome i czy można zmieniać ich rozmiar, używając odpowiednich komponentów. Więcej informacji znajdziesz w artykule Dodawanie typowych zachowań do encji.

val panelContent = MyCustomView(this)
val panelEntity = PanelEntity.create(
    session = xrSession,
    view = panelContent,
    pixelDimensions = IntSize2d(500, 500),
    name = "panel entity"
)