SubspaceModifier 類似於 Subspace 中可組合項的 Compose 修飾符。SubspaceModifier 可讓您在 3D 空間中操控可組合項,協助您定位、旋轉及為 3D 版面配置節點新增行為。
版面配置
根據預設,Subspace 會受到建議的應用程式觀看空間限制。測量子空間元件的版面配置時,系統會使用這些界線,類似於 2D Compose 版面配置中的界線。
填滿界線
修飾符 fillMaxSize、fillMaxWidth、fillMaxHeight 和 fillMaxDepth 可讓內容 (部分) 填滿父項的界線。使用填滿修飾符可協助應用程式版面配置內容,不受 XR 裝置的螢幕特性影響。
設定大小和必要大小
修飾符 size、width、height 和 depth 會宣告內容的偏好大小。如要宣告內容的確切大小,請使用 requiredSize、requiredWidth、requiredHeight 和 requiredDepth。這些單位必須以 dp 指定;如要從公尺轉換為 dp,請使用 Meter.toDp()。
放置可組合函式
offset
offset 修飾符會沿著 x、y 和 z 軸,在 3D 空間中移動可組合函式。這些單位必須在 dp 中指定;如要從公尺轉換為 dp,請使用 Meter.toDp()。
rotate
rotate 修飾符會在空間中旋轉指定的可組合函式。您可以透過不同方式指定旋轉方向和角度:
- 使用俯仰角、偏航角和滾轉角,分別指定繞
x、y和z軸的旋轉角度。 - 使用
axisAngle(代表旋轉軸的Vector3) 和應繞軸旋轉的角度量, - 使用代表旋轉的
Quaternion。
rotateToLookAtUser
rotateToLookAtUser 修飾符會持續旋轉內容,讓內容隨時面向使用者。您也可以使用這個修飾符,達到「看板」效果,讓內容在 Y 軸上旋轉,面向使用者,同時保持直立並與重力對齊。如要這麼做,請將 rotateToLookAtUser 修飾符與 gravityAligned 修飾符合併。
使用可組合函式移動及調整大小
讓使用者直接操控 3D 空間中物體的位置和大小。您可以將這些修飾符新增至個別元件 (例如 SpatialPanel)、子空間和空間版面配置元件 (例如 SpatialRow 或 SpatialColumn)。
移動元素
如果存在並啟用 movable 修飾符,系統就會顯示可拖曳的 UI 控制項,讓使用者在 3D 空間中移動元素。這項動作的具體行為是由提供的 movePolicy 定義:
MovePolicy.default:系統會完全處理移動作業,並根據使用者輸入內容自動計算及套用新的姿勢和比例。MovePolicy.custom:系統會根據輸入內容計算目標 Pose,但不會自動套用至相關聯的元素。這項功能有助於限制移動或在應用程式中建立自訂移動。
調整元素大小
如果 resizable() 修飾符存在且已啟用,系統就會顯示 UI 控制項,讓使用者調整 3D 空間中的元素大小。縮放的具體行為是由提供的 resizePolicy 定義:
ResizePolicy.default():系統會自動處理調整大小的手勢,並將新尺寸套用至內容。ResizePolicy.custom():系統會提供SpatialResizeEvent,但不會自動將大小調整結果套用至相關聯的元素。
變更可組合函式外觀
alpha
alpha 修飾符會設定元素及其子項的不透明度,其中 0f 代表完全透明,1.0f 代表完全不透明。
scale
scale 修飾符會沿著水平、垂直和深度軸縮放可組合項目的內容。
測試和無障礙功能
semantics
semantics 修飾符會為版面配置節點新增語意,以用於測試和無障礙功能。請參閱「Jetpack Compose 中的語意」和
SemanticsModifier。
testTag
testTag 修飾符是 SemanticsPropertyReceiver.testTag 的簡寫,可讓測試架構在測試中找到元素。