Un SubspaceModifier
est semblable à un modificateur Compose pour les composables dans un Subspace
. Un SubspaceModifier
vous permet de manipuler des composables dans un espace 3D, ce qui vous aide à positionner et à faire pivoter des nœuds de mise en page 3D, et à leur ajouter des comportements.
Mise en page
Par défaut, un Subspace
est limité par l'espace recommandé pour afficher une application. Ces limites sont utilisées pour mesurer la mise en page de vos composants de sous-espace, comme les limites dans les mises en page Compose 2D.
Limites de remplissage
Les modificateurs fillMaxSize
, fillMaxWidth
, fillMaxHeight
et fillMaxDepth
permettent au contenu de remplir (partiellement) les limites de son parent.
L'utilisation de modificateurs de remplissage permet à la mise en page de votre application de contenir du contenu indépendant des caractéristiques d'affichage de l'appareil XR.
Définir la taille et la taille requise
Les modificateurs size
, width
, height
et depth
déclarent la taille préférée du contenu. Pour déclarer la taille exacte du contenu, utilisez requiredSize
, requiredWidth
, requiredHeight
et requiredDepth
. Ces unités doivent être spécifiées dans dp
. Pour convertir des mètres en dp, utilisez Meter.toDp()
.
Positionner des composables
offset
Le modificateur offset
déplace le composable dans l'espace 3D le long des axes x
, y
et z
. Ces unités doivent être spécifiées en dp
. Pour convertir des mètres en dp, utilisez Meter.toDp()
.
rotate
Le modificateur rotate
fait pivoter le composable donné dans l'espace. Vous pouvez spécifier la direction et l'angle de rotation de différentes manières :
- En utilisant le tangage, le lacet et le roulis, qui spécifient la rotation autour des axes
x
,y
etz
respectivement, - Utilisez un
axisAngle
, qui est unVector3
représentant l'axe de rotation et le nombre de degrés de rotation autour de cet axe. - Utilisez un
Quaternion
qui représente la rotation.
Modifier l'apparence des composables
alpha
Le modificateur alpha
définit l'opacité de l'élément et de ses enfants, où 0f
représente la transparence totale et 1.0f
l'opacité totale.
scale
Le modificateur scale
met à l'échelle le contenu du composable le long des axes horizontal, vertical et de profondeur.
Ajouter des comportements aux composables
resizable
Lorsque le modificateur resizable
est activé, des commandes d'interface utilisateur déplaçables s'affichent pour permettre à l'utilisateur de redimensionner l'élément. Cela revient à utiliser ResizableComponent
sur un Entity
.
movable
Lorsque le modificateur movable
est activé, des commandes d'interface utilisateur sont ajoutées au composant, ce qui permet à l'utilisateur de déplacer l'élément dans l'espace 3D. Cela revient à utiliser MovableComponent
sur un Entity
.
Un nœud de mise en page movable
peut éventuellement spécifier les types de plans auxquels il doit s'ancrer lorsqu'il est déplacé. Par exemple, pour créer un SpatialPanel
qui s'aligne sur les tableaux :
SpatialPanel(
modifier.movable(anchorPlaneSemantics = setOf(PlaneSemantic.TABLE))
) {
// This panel snaps to available planes that are detected as a TABLE.
}
Pour que l'accrochage aux plans fonctionne, l'autorisation d'exécution android.permission.SCENE_UNDERSTANDING_COARSE
doit être accordée à votre application.
Tests et accessibilité
semantics
Le modificateur semantics
ajoute de la sémantique au nœud de mise en page, pour une utilisation dans les tests et l'accessibilité. Consultez Sémantique dans Jetpack Compose et SemanticsModifier
.
testTag
Le modificateur testTag
est une abréviation de SemanticsPropertyReceiver.testTag
, qui permet aux frameworks de test de trouver l'élément dans les tests.