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