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 Entwicklungen in der Android-UI-Entwicklung optimal nutzen und dafür sorgen, dass Ihre App immer den Branchenbest Practices entspricht.

Wenn Sie die Migration jedoch noch nicht durchgeführt haben und eine auf Android-Views basierende App orten 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. Verwende [ViewBinding][ViewBinding], um ComposeView in der onCreateView-Funktion aufzurufen.

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
           Orbiter(
               position = Edge.Top,
               offset = 10.dp,
               alignment = Alignment.End
           ) {
               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 über SceneCore mit PanelEntity erstellen. Mithilfe von Komponenten können Sie die Bereiche verschieben oder ihre Größe anpassen. Weitere Informationen finden Sie unter Entitäten ein gängiges Verhalten hinzufügen.

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