SpatialPanel는 앱의 콘텐츠를 표시할 수 있는 하위 공간 컴포저블입니다. 예를 들어 공간 패널에 동영상 재생, 정지 이미지 또는 기타 콘텐츠를 표시할 수 있습니다.
SubspaceModifier를 사용하여 공간 패널의 크기, 동작, 위치를 변경할 수 있습니다.
공간 패널 만들기
다음 예에서는 공간 패널을 만드는 방법을 보여줍니다.
Subspace { SpatialPanel( SubspaceModifier .height(824.dp) .width(1400.dp) .movable() .resizable(), ) { SpatialPanelContent() } }
@Composable fun SpatialPanelContent() { Box( Modifier .background(color = Color.Black) .height(500.dp) .width(500.dp), contentAlignment = Alignment.Center ) { Text( text = "Spatial Panel", color = Color.White, fontSize = 25.sp ) } }
코드에 관한 핵심 사항
SpatialPanelAPI는 하위 공간 컴포저블이므로Subspace내에서 호출해야 합니다. 하위 공간 외부에서 호출하면 예외가 발생합니다.SpatialPanel의 크기는SubspaceModifier의height및width사양을 사용하여 설정되었습니다. 이러한 사양을 생략하면 패널의 크기가 콘텐츠의 측정값에 따라 결정됩니다.movable하위 공간 수정자를 추가하여 사용자가 패널을 이동할 수 있도록 허용합니다.resizable하위 공간 수정자를 추가하여 사용자가 패널의 크기를 조절할 수 있도록 허용합니다.- 크기 및 위치 지정에 관한 자세한 내용은 공간 패널 디자인 안내를 참고하세요. 코드 구현에 관한 자세한 내용은 참조 문서를 참고하세요.
movable 수정자의 작동 방식
사용자가 패널을 멀리 이동하면 기본적으로 movable 수정자는 홈 공간에서 시스템이 패널 크기를 조절하는 방식과 유사하게 패널 크기를 조절합니다. 모든 하위 콘텐츠는 이 동작을 상속합니다. 이 기능을 사용 중지하려면
shouldScaleWithDistance 파라미터를 false로 설정하세요.
공간 레이아웃에 여러 공간 패널 추가
SpatialRow, SpatialColumn, SpatialBox, SpatialSpacer를 사용하여 여러 공간 패널을 만들고 공간 레이아웃 내에 배치할 수 있습니다.
다음 코드 예시에서는 이 작업을 수행하는 방법을 보여줍니다.
Subspace { SpatialRow { SpatialColumn { SpatialPanel(SubspaceModifier.height(250.dp).width(400.dp)) { SpatialPanelContent("Top Left") } SpatialPanel(SubspaceModifier.height(200.dp).width(400.dp)) { SpatialPanelContent("Middle Left") } SpatialPanel(SubspaceModifier.height(250.dp).width(400.dp)) { SpatialPanelContent("Bottom Left") } } SpatialColumn { SpatialPanel(SubspaceModifier.height(250.dp).width(400.dp)) { SpatialPanelContent("Top Right") } SpatialPanel(SubspaceModifier.height(200.dp).width(400.dp)) { SpatialPanelContent("Middle Right") } SpatialPanel(SubspaceModifier.height(250.dp).width(400.dp)) { SpatialPanelContent("Bottom Right") } } } }
@Composable fun SpatialPanelContent(text: String) { Column( Modifier .background(color = Color.Black) .fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text( text = "Panel", color = Color.White, fontSize = 15.sp ) Text( text = text, color = Color.White, fontSize = 25.sp, fontWeight = FontWeight.Bold ) } }
코드에 관한 핵심 사항
SpatialRow,SpatialColumn,SpatialBox,SpatialSpacer는 모두 하위 공간 컴포저블이며 하위 공간 내에 배치해야 합니다.SubspaceModifier를 사용하여 레이아웃을 맞춤설정합니다.- 여러 패널이 한 행에 있는 레이아웃의 경우 패널이 사용자를 둘러싸도록
SubspaceModifier를 사용하여 곡선 반경을 825dp로 설정하는 것이 좋습니다. 자세한 내용은 디자인 안내를 참고하세요.
맞춤 패널 및 레이아웃 만들기
Compose for XR에서 지원하지 않는 맞춤 패널을 만들려면 SceneCore API를 사용하여 PanelEntity 인스턴스 및 장면 그래프를 직접 사용하면 됩니다.