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.

Mit dem Android Jetpack Compose-Framework können Sie die neuesten Fortschritte bei der Entwicklung von Android-UIs optimal nutzen und dafür sorgen, dass Ihre App immer auf dem neuesten Stand der Branche ist.

Wenn Sie die Migration jedoch noch nicht durchgeführt haben und eine auf Android-Anzeigeansichten basierende App ordnen möchten, haben Sie mehrere Möglichkeiten.

Vorhandene Ansichten in SpatialPanels wiederverwenden

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

setSubspaceContent {
   SpatialPanel(
       view = MyCustomView(this),
       modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
   )
}

Android Views und Compose-Interoperabilitäts-APIs verwenden

Weitere Informationen finden Sie im Leitfaden zur Interoperabilität zwischen Google Tabellen und Google Docs. Diese Dokumentation behandelt die gemeinsame Verwendung dieser Frameworks und enthält Links zu Codebeispielen, die Sie verwenden können.

Mit einer ComposeView einem vorhandenen Fragment räumliche Ansichten und Orbiter hinzufügen

Verwenden Sie in Ihrem XML-Layout ein ComposeView, um Composables hinzuzufügen und neue XR-Inhalte zu erstellen. Verwenden Sie die Ansichtsbindung oder findViewById, um 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.fragment_first, container, false)
   val composeView = view.findViewById<ComposeView>(R.id.compose_view)
   composeView.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 ortsbezogen darstellen, können Sie Ihren vorhandenen UI-Code in Compose for XR weiterverwenden oder stattdessen direkt mit Session von Jetpack SceneCore arbeiten.

Du kannst Bereiche direkt in SceneCore mit PanelEntity erstellen. Mithilfe von Komponenten können Sie die Bereiche verschieben oder ihre Größe ändern. Weitere Informationen finden Sie unter Entitäten ein gängiges Verhalten hinzufügen.

val panelContent = MyCustomView(this)
val panelEntity = xrSession.createPanelEntity(
   view = panelContent,
   surfaceDimensionsPx = Dimensions(500f,500f),
   dimensions = Dimensions(1f,1f,1f),
   name = "panel entity"
)