Ein SubspaceModifier ähnelt einem Compose-Modifikator für Composables in einem Subspace. Mit einem SubspaceModifier können Sie Composables im 3D-Raum bearbeiten, um 3D-Layoutknoten zu positionieren, zu drehen und ihnen Verhaltensweisen hinzuzufügen.
Layout
Standardmäßig wird ein Subspace durch den empfohlenen Bereich zum Ansehen einer App begrenzt. Diese Grenzen werden verwendet, um das Layout Ihrer Unterraumkomponenten zu messen, ähnlich wie Grenzen in 2D-Compose-Layouts.
Grenzen für das Ausfü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 das Layout von Inhalten in Ihrer App unabhängig von den Displayeigenschaften des XR-Geräts gestalten.
Größe und erforderliche Größe festlegen
Mit den Modifizierern size, width, height und depth wird die bevorzugte Größe des Inhalts deklariert. Um die genaue Größe des Inhalts anzugeben, verwenden Sie requiredSize, requiredWidth, requiredHeight und requiredDepth. Diese Einheiten müssen in dp angegeben werden. Verwenden Sie Meter.toDp(), um Meter in dp umzurechnen.
Composable-Elemente positionieren
offset
Mit dem Modifier offset wird das Composable im 3D-Raum entlang der Achsen x, y und z verschoben. Diese Einheiten müssen in dp angegeben werden. Wenn Sie Meter in dp umrechnen möchten, verwenden Sie Meter.toDp().
rotate
Mit dem Modifier rotate wird die angegebene Composable im Raum gedreht. Sie können die Richtung und den Grad der Drehung auf verschiedene Arten angeben:
- Dabei werden Nick-, Gier- und Rollwinkel verwendet, die die Drehung um die
x-,y- bzw.z-Achse angeben. - Mit einer
axisAngle, die eineVector3darstellt, die die Rotationsachse angibt, und der Anzahl der Grad, um die rotiert werden soll, - Mit einer
Quaternion, die die Rotation darstellt.
rotateToLookAtUser
Mit dem Modifier rotateToLookAtUser werden Inhalte kontinuierlich gedreht, sodass sie immer dem Nutzer zugewandt sind. Mit diesem Modifikator können Sie auch einen „Billboard“-Effekt erzielen, bei dem sich der Inhalt auf der Y-Achse dreht, um dem Nutzer zugewandt zu sein, aber trotzdem aufrecht und an der Schwerkraft ausgerichtet bleibt. Kombinieren Sie dazu den Modifikator rotateToLookAtUser mit dem Modifikator gravityAligned.
Verschieben und Größe anpassen mit Composables
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), Unterbereichen und Komponenten für das räumliche Layout (z. B. SpatialRow oder SpatialColumn) hinzufügen.
Elemente verschieben
Mit verschiebbaren Modifikatoren können Nutzer Unterbereichselemente verschieben.
transformingMovable: Verwenden Sie diesen Modifikator für Standardbewegungen. Mit diesem Modifikator wird das Element so konfiguriert, dass es interaktiv ist und vom Nutzer verschoben werden kann. Das System berechnet und wendet automatisch die neue Ausrichtung und Skalierung basierend auf den Nutzereingaben an.movable: Mit diesem Modifikator können Sie benutzerdefiniertes Bewegungsverhalten definieren. Das System stellt zwar die Möglichkeit zum Verschieben bereit, Sie müssen jedoch das erforderlicheonMove-Ereignis verwenden und das Ergebnis anwenden. Das ist nützlich, um Bewegungen einzuschränken oder benutzerdefinierte Bewegungen in Ihrer App zu erstellen.
Größe von Elementen anpassen
Mit Größenänderungsmodifikatoren können Nutzer Unterbereichselemente ziehen und ihre Größe ändern.
transformingResizable: Verwenden Sie diesen Modifikator für die vom System verwaltete Größenanpassung. Dieser Modifier verarbeitet automatisch die Geste zum Ändern der Größe und wendet die neuen Abmessungen an, die der Nutzer angibt.resizable: Verwenden Sie diesen Modifikator für die benutzerdefinierte Größenanpassungslogik. Das System bietet zwar die Möglichkeit, die Größe anzupassen, Sie müssen jedoch dasonResize-Ereignis verwenden und das Ergebnis anwenden. Dieser Modifikator ist nützlich für komplexe Szenarien, z. B. wenn Sie ein bestimmtes Seitenverhältnis beibehalten oder das Gesamtlayout anderer Komponenten nach dem Ende einer Größenänderung anpassen möchten.
Darstellung von Composables ändern
alpha
Mit dem Modifikator alpha wird die Deckkraft des Elements und seiner untergeordneten Elemente festgelegt. Dabei steht 0f für vollständig transparent und 1.0f für vollständig undurchsichtig.
scale
Mit dem Modifikator scale wird der Inhalt des Composables entlang der horizontalen, vertikalen und Tiefenachse skaliert.
Tests und Barrierefreiheit
semantics
Mit dem Modifikator semantics werden dem Layoutknoten Semantik für Tests und Barrierefreiheit hinzugefügt. Weitere Informationen finden Sie unter Semantik in Jetpack Compose und SemanticsModifier.
testTag
Der Modifikator testTag ist eine Kurzform für SemanticsPropertyReceiver.testTag, mit der Test-Frameworks das Element in Tests finden können.