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
축을 중심으로 한 회전을 지정하는 피치, 요, 롤을 사용합니다. - 회전 축을 나타내는
Vector3
인axisAngle
와 회전할 각도를 사용하여 - 회전을 나타내는
Quaternion
사용
컴포저블의 모양 변경
alpha
alpha
수정자는 요소와 하위 요소의 불투명도를 설정합니다. 여기서 0f
는 완전히 투명한 상태를 나타내고 1.0f
는 완전히 불투명한 상태를 나타냅니다.
scale
scale
수정자는 가로, 세로, 깊이 축을 따라 컴포저블의 콘텐츠를 조정합니다.
컴포저블에 동작 추가
resizable
resizable
수정자가 사용 설정되면 사용자가 요소를 크기를 조절할 수 있는 드래그 가능한 UI 컨트롤이 표시됩니다. 이는 Entity
에서 ResizableComponent
를 사용하는 것과 유사합니다.
movable
movable
수정자가 사용 설정되면 사용자가 3D 공간에서 요소를 이동할 수 있는 UI 컨트롤이 구성요소에 추가됩니다. 이는 Entity
에서 MovableComponent
를 사용하는 것과 유사합니다.
movable
레이아웃 노드는 이동할 때 고정해야 하는 평면 유형을 선택적으로 지정할 수 있습니다. 예를 들어 표에 스냅되는 SpatialPanel
를 만들려면 다음을 실행합니다.
SpatialPanel(
modifier.movable(anchorPlaneSemantics = setOf(PlaneSemantic.TABLE))
) {
// This panel snaps to available planes that are detected as a TABLE.
}
평면에 스냅하려면 앱에 android.permission.SCENE_UNDERSTANDING_COARSE
런타임 권한이 부여되어야 합니다.
테스트 및 접근성
semantics
semantics
수정자는 테스트 및 접근성에서 사용할 수 있도록 레이아웃 노드에 시맨틱을 추가합니다. Jetpack Compose의 시맨틱 및 SemanticsModifier
를 참고하세요.
testTag
testTag
수정자는 SemanticsPropertyReceiver.testTag
의 단축형으로, 테스트 프레임워크가 테스트에서 요소를 찾을 수 있도록 합니다.