Ihrer App einen Unterbereich hinzufügen

XR‑Geräte, für die der Leitfaden gilt
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für die folgenden Arten von XR-Geräten zu entwickeln.
XR-Headsets
Kabelgebundene XR-Datenbrille

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 SpatialPanel verschachtelt ist, ist dieser Subspace ein untergeordnetes Element des SpatialPanel, 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.