Benutzeroberfläche für Android-Anwendungen mit Ansichten entwickeln

Compose ausprobieren
Jetpack Compose mit dem Jetpack XR SDK ist das empfohlene UI-Toolkit für Android XR.

Das Android Jetpack Compose-Framework ist die beste Möglichkeit, die neuesten Fortschritte in der Android-UI-Entwicklung zu nutzen und dafür zu sorgen, dass Ihre Anwendung den Best Practices der Branche entspricht.

Wenn Sie jedoch noch nicht migriert sind und an der räumlichen Darstellung einer App arbeiten, die auf Android-Ansichten basiert, gibt es einige Möglichkeiten.

Vorhandene Ansichten in SpatialPanels wiederverwenden

SpatialPanels sind zwar Teil der Jetpack Compose for XR-Bibliothek, akzeptieren aber auch Views. Wenn Sie Subspace in Ihrer MainActivity verwenden, platzieren Sie eine vorhandene Ansicht in einem SpatialPanel, wie im folgenden Beispiel gezeigt.

setContent {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
        ) { MyCustomView(this@ActivityWithSubspaceContent) }
    }
}

Android Views- und Compose-Interoperabilitäts-APIs verwenden

Weitere Informationen zur Interoperabilität zwischen Views und Compose In dieser Dokumentation wird die gemeinsame Verwendung dieser Frameworks beschrieben. Außerdem finden Sie Links zu Codebeispielen, die Sie verwenden können.

ComposeView verwenden, um einem vorhandenen Fragment räumliche Bereiche und Orbiters hinzuzufügen

Verwenden Sie ein ComposeView in Ihrem XML-Layout, um Composables hinzuzufügen und neue XR-Inhalte zu erstellen. Verwenden Sie View Binding oder findViewById, um die ComposeView in der Funktion onCreateView() zu finden.

Weitere Informationen zu 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
}

Direkt mit der Jetpack SceneCore-Bibliothek arbeiten

Compose for XR basiert auf Jetpack SceneCore. Wenn Sie eine auf Views basierende App räumlich gestalten, können Sie Ihren vorhandenen UI-Code in Compose für XR weiter verwenden oder direkt mit dem Session von Jetpack SceneCore arbeiten.

Sie können Bereiche direkt in SceneCore mit PanelEntity erstellen. Legen Sie die Größe des Bereichs in Metern mit dimensions oder in Pixeln mit pixelDimensions fest. Mit den entsprechenden Komponenten können Sie festlegen, ob die Bereiche verschiebbar oder in der Größe anpassbar sein sollen. Weitere Informationen finden Sie unter Entitäten gemeinsames Verhalten hinzufügen.

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