Modificateurs de sous-espace

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 et z respectivement,
  • Utilisez un axisAngle, qui est un Vector3 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.