Orbiter는 공간화된 구성요소로, SpatialColumn, SpatialRow, SpatialBox와 같은 해당 공간 패널 또는 공간 레이아웃 구성요소에 연결할 수 있습니다. 오비터에는 일반적으로 고정된 항목과 관련된 탐색 및 상황별 작업 항목이 포함됩니다. 예를 들어 동영상 콘텐츠를 표시하는 공간 패널을 만든 경우 오비터 내에 동영상 재생 컨트롤을 추가할 수 있습니다.
궤도선 만들기
다음 예와 같이 SpatialPanel의 2D 레이아웃 내에서 오비터를 호출하여 탐색과 같은 사용자 컨트롤을 래핑합니다. 이렇게 하면 2D 레이아웃에서 추출되어 구성에 따라 공간 패널에 연결됩니다.
Subspace { SpatialPanel( SubspaceModifier .height(824.dp) .width(1400.dp) .resizable() .movable(), ) { SpatialPanelContent() OrbiterExample() } }
@Composable fun OrbiterExample() { Orbiter( position = OrbiterPosition.BottomCenter( verticalEdgeAlignment = OrbiterPosition.EdgeAlignment.Outside, offset = DpVolumeOffset(y = 96.dp) ), ) { Surface(Modifier.clip(CircleShape)) { Row( Modifier .background(color = Color.Black) .height(100.dp) .width(600.dp), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically ) { Text( text = "Orbiter", color = Color.White, fontSize = 50.sp ) } } } }
코드에 관한 핵심 사항
- 오비터는 공간 UI 구성요소이므로 코드를 2D 또는 3D 레이아웃에서 재사용할 수 있습니다. 2D 레이아웃에서 앱은 오비터 내부의 콘텐츠만 렌더링하고 오비터 자체는 무시합니다.
- 오비터를 사용하고 디자인하는 방법에 관한 자세한 내용은 디자인 안내를 참고하세요.
공간 패널 및 레이아웃에 오비터 고정
Compose에 선언된 SpatialPanel 및 공간 레이아웃 구성요소에 오비터를 고정할 수 있습니다. 여기에는 SpatialRow, SpatialColumn, SpatialBox와 같은 UI 요소의 공간 레이아웃에서 오비터를 선언하는 작업이 포함됩니다. 궤도 요소는 선언된 위치에서 가장 가까운 상위 요소에 고정됩니다.
궤도선의 동작은 선언 위치에 따라 결정됩니다.
SpatialPanel로 래핑된 2D 레이아웃(이전 코드 스니펫에 표시됨)에서 오비터는 해당SpatialPanel에 고정됩니다.Subspace에서 Orbiter는 가장 가까운 상위 항목에 고정됩니다. 이 항목은 Orbiter가 선언된 공간 레이아웃입니다.
다음 예는 오비터를 공간 행에 고정하는 방법을 보여줍니다.
Subspace { SpatialRow { Orbiter( position = OrbiterPosition.TopCenter( verticalEdgeAlignment = OrbiterPosition.EdgeAlignment.Outside, offset = DpVolumeOffset(y = 8.dp) ), shape = SpatialRoundedCornerShape(size = CornerSize(50)) ) { Text( "Hello World!", style = MaterialTheme.typography.titleMedium, modifier = Modifier .background(Color.White) .padding(16.dp) ) } SpatialPanel( SubspaceModifier .height(824.dp) .width(1400.dp) ) { Box( modifier = Modifier .background(Color.Red) ) } SpatialPanel( SubspaceModifier .height(824.dp) .width(1400.dp) ) { Box( modifier = Modifier .background(Color.Blue) ) } } }
코드에 관한 핵심 사항
- 2D 레이아웃 외부에서 Orbiter를 선언하면 Orbiter는 가장 가까운 상위 항목에 고정됩니다. 이 경우 orbiter는 선언된
SpatialRow의 상단에 고정됩니다. SpatialRow,SpatialColumn,SpatialBox와 같은 공간 레이아웃에는 모두 콘텐츠가 없는 항목이 연결되어 있습니다. 따라서 공간 레이아웃에 선언된 오비터는 해당 레이아웃에 고정됩니다.