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
ez
rispettivamente, - Utilizzando un
axisAngle
, ovvero unVector3
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.