Subspace-Modifikatoren

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‑Brillen

Ein SubspaceModifier ähnelt einem Compose-Modifikator für Composables in einem Subspace. Mit einem SubspaceModifier können Sie Composables im 3D‑Raum bearbeiten und so 3D‑Layoutknoten positionieren, drehen und Verhaltensweisen hinzufügen.

Layout

Standardmäßig ist ein Subspace durch den empfohlenen Bereich für die Anzeige einer App begrenzt. Diese Grenzen werden verwendet, wenn das Layout Ihrer Subspace Komponenten gemessen wird, ähnlich wie bei Grenzen in 2D‑Compose-Layouts.

Grenzen füllen

Mit den Modifikatoren fillMaxSize, fillMaxWidth, fillMaxHeight und fillMaxDepth wird der Inhalt (teilweise) an die Grenzen des übergeordneten Elements angepasst. Mit Fill-Modifikatoren können Sie App-Layoutinhalte erstellen, die unabhängig von den Anzeigeeigenschaften des XR‑Geräts sind.

Größe und erforderliche Größe festlegen

Mit den Modifikatoren size, width, height und depth wird die bevorzugte Größe des Inhalts deklariert. Um die genaue Größe des Inhalts zu deklarieren, verwenden Sie requiredSize, requiredWidth, requiredHeight und requiredDepth. Diese Einheiten müssen in dp angegeben werden. Verwenden Sie Meter.toDp(), um von Metern in dp umzurechnen.

Composables positionieren

offset

Mit dem Modifikator offset wird das Composables im 3D‑Raum entlang der x, y, und z‑Achse verschoben. Diese Einheiten müssen in dp angegeben werden. Verwenden Sie Meter.toDp(), um von Metern in dp umzurechnen.

rotate

Mit dem Modifikator rotate wird das angegebene Composables im Raum gedreht. Sie können die Richtung und den Grad der Drehung auf verschiedene Arten angeben:

  • Mit Pitch, Yaw und Roll, die die Drehung um die x-, y- bzw. z-Achse angeben.
  • Mit einem axisAngle, einem Vector3, der die Drehachse darstellt, und dem Grad, um den gedreht werden soll.
  • Mit einem Quaternion, der die Drehung darstellt.

rotateToLookAtUser

Mit dem rotateToLookAtUser Modifikator wird der Inhalt kontinuierlich so gedreht , dass er immer dem Nutzer zugewandt ist. Sie können diesen Modifikator auch verwenden, um einen „Billboard“-Effekt zu erzielen, bei dem der Inhalt so gedreht wird, dass er dem Nutzer auf der Y‑Achse zugewandt ist, aber dennoch aufrecht bleibt und an der Schwerkraft ausgerichtet ist. Kombinieren Sie dazu den rotateToLookAtUser Modifikator mit dem gravityAligned Modifikator.

Composables verschieben und ihre Größe ändern

Nutzer können die Position und Größe von Objekten im 3D‑Raum direkt bearbeiten. Sie können diese Modifikatoren einzelnen Komponenten (z. B. SpatialPanel), Subspaces und räumlichen Layoutkomponenten (z. B. SpatialRow oder SpatialColumn) hinzufügen.

Elemente verschieben

Wenn der Modifikator movable vorhanden und aktiviert ist, werden verschiebbare UI Steuerelemente angezeigt, mit denen der Nutzer das Element im 3D‑Raum verschieben kann. Das spezifische Verhalten dieser Bewegung wird durch die angegebene movePolicy definiert:

  • MovePolicy.default: Das System verarbeitet die Bewegung vollständig und berechnet und wendet die neue Pose und Skalierung automatisch basierend auf der Nutzereingabe an.
  • MovePolicy.custom: Das System berechnet die Zielpose basierend auf der Eingabe, wendet sie aber nicht automatisch auf das zugehörige Element an. Das ist nützlich, um die Bewegung einzuschränken oder benutzerdefinierte Bewegungen in Ihrer App zu erstellen.

Größe von Elementen ändern

Wenn der resizable() Modifikator vorhanden und aktiviert ist, werden UI‑Steuerelemente angezeigt, mit denen der Nutzer die Größe des Elements im 3D‑Raum ändern kann. Das spezifische Verhalten der Größenänderung wird durch die angegebene resizePolicy definiert:

  • ResizePolicy.default(): Das System verarbeitet die Geste zur Größenänderung automatisch und wendet die neuen Abmessungen auf den Inhalt an.
  • ResizePolicy.custom(): Das System stellt ein SpatialResizeEvent bereit und wendet das Ergebnis der Größenänderung nicht automatisch auf das zugehörige Element an.

Darstellung von Composables ändern

alpha

Mit dem Modifikator alpha wird die Deckkraft des Elements und seiner untergeordneten Elemente festgelegt, wobei 0f für vollständig transparent und 1.0f für vollständig undurchsichtig steht.

scale

Mit dem scale Modifikator wird der Inhalt des Composables entlang der horizontalen, vertikalen und Tiefenachse skaliert.

Testen und Barrierefreiheit

semantics

Mit dem Modifikator semantics werden dem Layoutknoten Semantik hinzugefügt, die für Tests und Barrierefreiheit verwendet werden kann. Weitere Informationen finden Sie unter Semantik in Jetpack Compose und SemanticsModifier.

testTag

Der testTag Modifikator ist eine Kurzform für SemanticsPropertyReceiver.testTag, mit der Test-Frameworks das Element in Tests finden können.