Un SubspaceModifier è simile a un modificatore Compose per gli elementi composable
in uno Subspace. Un SubspaceModifier ti consente di manipolare gli elementi composable nello spazio 3D, aiutandoti a posizionare, ruotare 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 dello spazio secondario, in modo simile ai limiti nei layout 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 dei modificatori di riempimento consente al layout dell'app di visualizzare contenuti indipendenti 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 dei
contenuti, utilizza requiredSize, requiredWidth,
requiredHeight e requiredDepth. Queste unità devono essere specificate
in dp; per convertire da metri a dp, utilizza Meter.toDp().
Posiziona gli elementi composable
offset
Il modificatore offset sposta l'elemento composable nello spazio 3D lungo gli assi x, y,
e z. Queste unità devono essere specificate in dp; per convertire da metri a
dp, utilizza Meter.toDp().
rotate
Il modificatore rotate ruota l'elemento composable specificato nello spazio. Puoi specificare la direzione e la quantità di rotazione in diversi modi:
- Utilizzando beccheggio, imbardata e rollio, che specificano la rotazione attorno agli assi
x,yezrispettivamente, - Utilizzando un
axisAngle, ovvero unVector3che rappresenta l'asse di rotazione e la quantità di gradi di cui deve essere ruotato, - Utilizzando un
Quaternionche rappresenta la rotazione.
rotateToLookAtUser
Il modificatore rotateToLookAtUser ruota continuamente
i contenuti in modo che siano sempre rivolti verso l'utente. Puoi anche utilizzare questo modificatore per ottenere un effetto "cartellone" in cui i contenuti ruotano per essere rivolti verso l'utente sull'asse Y, pur rimanendo in posizione verticale e allineati alla gravità. Per farlo,
combina il rotateToLookAtUser modificatore con
il gravityAligned modificatore.
Sposta e ridimensiona con gli elementi composable
Consenti agli utenti di manipolare direttamente la posizione e le dimensioni degli oggetti nello spazio 3D. Puoi aggiungere questi modificatori a singoli componenti (come SpatialPanel), spazi secondari e componenti di layout spaziale (come SpatialRow o SpatialColumn).
Sposta gli elementi
Quando il modificatore movable è presente e abilitato, vengono mostrati controlli dell'interfaccia utente trascinabili
che consentono all'utente di spostare l'elemento nello spazio 3D. Il comportamento specifico di questo movimento è definito da movePolicy fornito:
MovePolicy.default: il sistema gestisce completamente il movimento e calcola e applica automaticamente la nuova posa e la nuova scala in base all'input dell'utente.MovePolicy.custom: il sistema calcola la posa di destinazione in base all'input, ma non la applica automaticamente all'elemento associato. Questa opzione è utile per limitare il movimento o creare movimenti personalizzati nell'app.
Ridimensiona gli elementi
Quando il modificatore resizable() è presente e abilitato, vengono mostrati controlli dell'interfaccia utente
che consentono all'utente di ridimensionare l'elemento nello spazio 3D. Il comportamento specifico del ridimensionamento è definito da resizePolicy fornito:
ResizePolicy.default(): il sistema gestisce automaticamente il gesto di ridimensionamento e applica le nuove dimensioni ai contenuti.ResizePolicy.custom(): il sistema fornisce unSpatialResizeEvente non applica automaticamente il risultato del ridimensionamento all'elemento associato.
Modifica l'aspetto degli elementi composable
alpha
Il modificatore alpha imposta l'opacità dell'elemento e dei relativi elementi secondari,
dove 0f rappresenta la trasparenza completa e 1.0f rappresenta l'opacità completa.
scale
Il modificatore scale ridimensiona i contenuti dell'elemento composable lungo gli assi
orizzontale, verticale e di profondità.
Test e accessibilità
semantics
Il modificatore semantics aggiunge la semantica al nodo di layout, per l'utilizzo nei
test e nell'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.