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

Wypróbuj tworzenie wiadomości
Jetpack Compose z pakietem Jetpack XR SDK to zalecany zestaw narzędzi interfejsu na potrzeby Androida XR.

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