Ein SpatialPanel ist ein Subspace-Composable, mit dem Sie die Inhalte Ihrer App anzeigen können. Sie können beispielsweise die Videowiedergabe, Standbilder oder andere Inhalte in einem räumlichen Bereich anzeigen.
Mit SubspaceModifier können Sie die Größe, das Verhalten und die Position des räumlichen Bereichs ändern.
Spatial-Bereich erstellen
Im folgenden Beispiel wird gezeigt, wie ein räumliches Steuerfeld erstellt wird.
Subspace { SpatialPanel( SubspaceModifier .height(824.dp) .width(1400.dp) .movable() .resizable(), ) { SpatialPanelContent() } }
@Composable fun SpatialPanelContent() { Box( Modifier .background(color = Color.Black) .height(500.dp) .width(500.dp), contentAlignment = Alignment.Center ) { Text( text = "Spatial Panel", color = Color.White, fontSize = 25.sp ) } }
Wichtige Punkte zum Code
- Da
SpatialPanel-APIs Subspace-Kompositionen sind, müssen Sie sie innerhalb vonSubspaceaufrufen. Wenn Sie sie außerhalb eines Unterbereichs aufrufen, wird eine Ausnahme ausgelöst. - Die Größe des
SpatialPanelwurde mit den Spezifikationenheightundwidthfür denSubspaceModifierfestgelegt. Wenn Sie diese Angaben weglassen, wird die Größe des Bereichs durch die Abmessungen seines Inhalts bestimmt. - Ermöglichen Sie dem Nutzer, ein Steuerfeld zu verschieben, indem Sie einen
movable-Subspace-Modifikator hinzufügen. - Ermöglichen Sie dem Nutzer, die Größe eines Bereichs zu ändern, indem Sie den Unterbereichsmodifikator
resizablehinzufügen. - Weitere Informationen zur Größe und Positionierung findest du in unseren Designrichtlinien für räumliche Bereiche. Weitere Informationen zur Codeimplementierung finden Sie in unserer Referenzdokumentation.
Funktionsweise des Modifikators movable
Wenn ein Nutzer ein Steuerfeld von sich wegbewegt, wird es standardmäßig mit dem Modifikator movable ähnlich skaliert, wie Steuerfelder vom System im Home Space skaliert werden. Alle untergeordneten Inhalte übernehmen dieses Verhalten. Wenn Sie diese Funktion deaktivieren möchten, setzen Sie den Parameter shouldScaleWithDistance auf false.
Einem räumlichen Layout mehrere räumliche Bereiche hinzufügen
Sie können mehrere räumliche Bereiche erstellen und sie mit SpatialRow, SpatialColumn, SpatialBox und SpatialSpacer in einem räumlichen Layout platzieren.
Das folgende Codebeispiel zeigt, wie das geht.
Subspace { SpatialRow { SpatialColumn { SpatialPanel(SubspaceModifier.height(250.dp).width(400.dp)) { SpatialPanelContent("Top Left") } SpatialPanel(SubspaceModifier.height(200.dp).width(400.dp)) { SpatialPanelContent("Middle Left") } SpatialPanel(SubspaceModifier.height(250.dp).width(400.dp)) { SpatialPanelContent("Bottom Left") } } SpatialColumn { SpatialPanel(SubspaceModifier.height(250.dp).width(400.dp)) { SpatialPanelContent("Top Right") } SpatialPanel(SubspaceModifier.height(200.dp).width(400.dp)) { SpatialPanelContent("Middle Right") } SpatialPanel(SubspaceModifier.height(250.dp).width(400.dp)) { SpatialPanelContent("Bottom Right") } } } }
@Composable fun SpatialPanelContent(text: String) { Column( Modifier .background(color = Color.Black) .fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text( text = "Panel", color = Color.White, fontSize = 15.sp ) Text( text = text, color = Color.White, fontSize = 25.sp, fontWeight = FontWeight.Bold ) } }
Wichtige Punkte zum Code
SpatialRow,SpatialColumn,SpatialBoxundSpatialSpacersind allesamt Subspace-Kompositionen und müssen in einem Subspace platziert werden.- Verwenden Sie
SubspaceModifier, um das Layout anzupassen. - Für Layouts mit mehreren Bereichen in einer Reihe empfehlen wir, einen Kurvenradius von 825 dp mit einem
SubspaceModifierfestzulegen, damit die Bereiche den Nutzer umgeben. Weitere Informationen finden Sie in unseren Designrichtlinien.
Benutzerdefinierte Bereiche und Layouts erstellen
Wenn Sie benutzerdefinierte Bereiche erstellen möchten, die von Compose for XR nicht unterstützt werden, können Sie mit den SceneCore APIs direkt mit PanelEntity-Instanzen und dem Szenengraphen arbeiten.