Ein Unterbereich ist ein Teil des 3D-Bereichs in Ihrer App, in dem Sie 3D-Modelle platzieren, 3D-Layouts erstellen und ansonsten 2D-Inhalten Tiefe verleihen können. Ein Unterraum wird nur gerendert, wenn die Spatialisierung aktiviert ist. Im Home Space oder auf Nicht-XR-Geräten wird jeglicher Code innerhalb dieses Subspace ignoriert.
Weitere Informationen zu räumlichen Layouts und den Komponenten, die Sie in einem Unterbereich verwenden können, finden Sie unter Räumliche Komponenten.
Unterbereichshierarchien
Die oberste Ebene Subspace ist der äußerste Unterbereich, der von Ihrer App aufgerufen wird. Jeder Aufruf einer Subspace-Methode erstellt eine neue, unabhängige Spatial UI-Hierarchie. Sie übernimmt nicht die räumliche Position, Ausrichtung oder Skalierung eines übergeordneten Subspace, in dem sie verschachtelt ist.
Wenn Sie ein eingebettetes oder verschachteltes Subspace in einer SpatialPanel, Orbiter, SpatialPopup oder einer anderen Komponente erstellen möchten, verwenden Sie PlanarEmbeddedSubspace.
PlanarEmbeddedSubspace unterscheidet sich in zwei wesentlichen Punkten von Subspace:
- Sie sind Teil des 2D-Layouts, in dem sie aufgerufen werden. Das bedeutet, dass die Höhe und Breite des Unterbereichs durch die Höhe und Breite des übergeordneten 2D-Layouts begrenzt werden.
- Sie verhalten sich wie untergeordnete Elemente der Entität, in der sie aufgerufen werden. Wenn Sie also ein Subspace-Composable aufrufen, das in einem
SpatialPanelverschachtelt ist, ist dieser Subspace ein untergeordnetes Element desSpatialPanel, in dem er aufgerufen wird.
Diese Verhaltensweisen von PlanarEmbeddedSubspace ermöglichen Funktionen wie:
- Untergeordnete Entität zusammen mit der übergeordneten Entität verschieben
- Verschieben der Position des untergeordneten Elements mithilfe des Offsets
SubspaceModifier - Präsentieren eines 3D-Objekts, das über der 2D-Benutzeroberfläche schwebt und der Höhe und Breite des entsprechenden Bereichs im 2D-Layout entspricht
Layouts für einen untergeordneten Space anpassen
Unter Android XR ist das Layout Ihrer App im Full Space-Modus standardmäßig an die VolumeConstraints von Subspace gebunden. Daher solltest du die Größe des sichtbaren Bereichs berücksichtigen, der dem Nutzer zur Verfügung steht, und dein Layout entsprechend anpassen. Die recommendedContentBoxInFullSpace stellt die spezifischen Abmessungen für den Begrenzungsrahmen innerhalb der ActivitySpace bereit, damit Inhalte im Sichtfeld des Nutzers platziert werden können.
Der Hauptinhalt Ihrer App sollte in dieses Feld passen. Wenn du Inhalte hast, die die empfohlenen Grenzen überschreiten müssen, solltest du ein Layout in Betracht ziehen, das Nutzer dazu anregt, den Raum durch Kopfbewegungen zu erkunden. Die Standardeinschränkung von recommendedContentBoxInFullSpace kann durch Anwenden eines benutzerdefinierten größenbasierten Modifikators wie SubspaceModifier.requiredSizeIn überschrieben werden. Legen Sie für unbegrenztes Verhalten allowUnboundedSubspace = true fest.
Rufen Sie recommendedContentBoxInFullSpace mit der aktuellen Sitzung auf, um diese spezifischen Dimensionen nach Bedarf abzurufen. Siehe folgendes Beispiel:
val session = LocalSession.current session?.scene?.activitySpace?.recommendedContentBoxInFullSpace
Subspace zur App hinzufügen
Im folgenden Codebeispiel wird gezeigt, wie Sie Subspace und PlanarEmbeddedSubspace zu Ihrer App hinzufügen:
setContent { // This is a top-level subspace Subspace { SpatialPanel { MyComposable() } } }
@Composable private fun MyComposable() { Row { PrimaryPane() SecondaryPane() } } @Composable private fun PrimaryPane() { // This is an embedded subspace, because PrimaryPane is in a SpatialPanel // and that SpatialPanel is in the top-level Subspace PlanarEmbeddedSubspace { SpatialPanel {} } }
Weitere Informationen finden Sie in der vollständigen Referenzdokumentation zu Subspace und PlanarEmbeddedSubspace.