Modificatori dello spazio sottostante

Un SubspaceModifier è simile a un modificatore di composizione per i componenti componibili in un Subspace. Un SubspaceModifier ti consente di manipolare i composable nello spazio 3D, aiutandoti a posizionarli, ruotarli e aggiungere comportamenti ai nodi di layout 3D.

Layout

Per impostazione predefinita, un Subspace è delimitato dallo spazio consigliato per la visualizzazione di un'app. Questi limiti vengono utilizzati per misurare il layout dei componenti del sottospazio, in modo simile ai limiti nei layout di Compose 2D.

Riempi limiti

I modificatori fillMaxSize, fillMaxWidth, fillMaxHeight e fillMaxDepth fanno in modo che i contenuti riempiano (parzialmente) i limiti del relativo elemento principale. L'utilizzo di modificatori di riempimento consente al layout dell'app di disporre i contenuti in modo indipendente dalle caratteristiche di visualizzazione del dispositivo XR.

Imposta le dimensioni e le dimensioni richieste

I modificatori size, width, height e depth dichiarano le dimensioni preferite dei contenuti. Per dichiarare le dimensioni esatte del contenuto, utilizza requiredSize, requiredWidth, requiredHeight e requiredDepth. Queste unità devono essere specificate in dp; per convertire da metri a dp, utilizza Meter.toDp().

Composable di posizione

offset

Il modificatore offset sposta il componente componibile nello spazio 3D lungo gli assi x, y e z. Queste unità devono essere specificate in dp; per la conversione da metri a dp, utilizza Meter.toDp().

rotate

Il modificatore rotate ruota il composable specificato nello spazio. Puoi specificare la direzione e l'entità della rotazione in diversi modi:

  • Utilizzando beccheggio, imbardata e rollio, che specificano la rotazione attorno agli assi x, y e z rispettivamente,
  • Utilizzando un axisAngle, ovvero un Vector3 che rappresenta l'asse di rotazione, e l'angolo di rotazione in gradi,
  • Utilizzando un Quaternion che rappresenta la rotazione.

Modificare l'aspetto dei componenti componibili

alpha

Il modificatore alpha imposta l'opacità dell'elemento e dei relativi elementi secondari, dove 0f rappresenta la trasparenza completa e 1.0f l'opacità completa.

scale

Il modificatore scale ridimensiona i contenuti del composable lungo gli assi orizzontale, verticale e di profondità.

Aggiungere comportamenti ai composable

resizable

Quando il modificatore resizable è attivato, vengono visualizzati controlli UI trascinabili che consentono all'utente di ridimensionare l'elemento. Questa operazione è simile all'utilizzo di ResizableComponent su un Entity.

movable

Quando il modificatore movable è attivato, i controlli dell'interfaccia utente vengono aggiunti al componente, consentendo all'utente di spostare l'elemento nello spazio 3D. Questa operazione è simile all'utilizzo di MovableComponent su un Entity.

Un nodo di layout movable può specificare facoltativamente i tipi di piani a cui deve essere ancorato quando viene spostato. Ad esempio, per creare un SpatialPanel che si aggancia alle tabelle:

SpatialPanel(
  modifier.movable(anchorPlaneSemantics = setOf(PlaneSemantic.TABLE))
) {
  // This panel snaps to available planes that are detected as a TABLE.
}

L'allineamento ai piani richiede che alla tua app venga concessa l'android.permission.SCENE_UNDERSTANDING_COARSE autorizzazione di runtime.

Test e accessibilità

semantics

Il modificatore semantics aggiunge la semantica al nodo del layout, per l'utilizzo in test e accessibilità. Consulta Semantica in Jetpack Compose e SemanticsModifier.

testTag

Il modificatore testTag è un'abbreviazione di SemanticsPropertyReceiver.testTag, che consente ai framework di test di trovare l'elemento nei test.