SpatialPanel adalah composable subruang yang memungkinkan Anda menampilkan
konten aplikasi–misalnya, Anda dapat menampilkan pemutaran video, gambar diam, atau
konten lainnya di panel spasial.
Anda dapat menggunakan SubspaceModifier untuk mengubah ukuran, perilaku, dan posisi panel spasial
Membuat panel spasial
Contoh berikut menunjukkan cara membuat panel spasial.
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 ) } }
Poin penting tentang kode
- Karena API
SpatialPaneladalah composable subruang, Anda harus memanggilnya di dalamSubspace. Memanggilnya di luar sub-ruang akan menampilkan pengecualian. - Ukuran
SpatialPaneltelah ditetapkan menggunakan spesifikasiheightdanwidthpadaSubspaceModifier. Dengan menghilangkan spesifikasi ini, ukuran panel akan ditentukan oleh pengukuran kontennya. - Izinkan pengguna memindahkan panel dengan menambahkan pengubah subruang
movable. - Izinkan pengguna mengubah ukuran panel dengan menambahkan pengubah subruang
resizable. - Lihat panduan desain panel spasial kami untuk mengetahui detail tentang ukuran dan pemosisian. Lihat dokumentasi referensi kami untuk mengetahui detail selengkapnya tentang penerapan kode.
Cara kerja pengubah movable
Saat pengguna menjauhkan panel, pengubah movable secara default
akan menskalakan panel dengan cara yang mirip dengan cara panel diubah ukurannya oleh sistem di
ruang beranda. Semua konten turunan mewarisi perilaku ini. Untuk menonaktifkannya,
tetapkan parameter shouldScaleWithDistance ke false.
Menambahkan beberapa panel spasial ke tata letak spasial
Anda dapat membuat beberapa panel spasial dan menempatkannya dalam tata letak spasial
menggunakan SpatialRow, SpatialColumn, SpatialBox, dan
SpatialSpacer.
Contoh kode berikut menunjukkan cara melakukannya.
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 ) } }
Poin penting tentang kode
SpatialRow,SpatialColumn,SpatialBox, danSpatialSpacersemuanya adalah composable subruang dan harus ditempatkan dalam subruang.- Gunakan
SubspaceModifieruntuk menyesuaikan tata letak Anda. - Untuk tata letak dengan beberapa panel dalam satu baris, sebaiknya tetapkan radius lengkungan
825 dp menggunakan
SubspaceModifieragar panel mengelilingi pengguna. Lihat panduan desain kami untuk mengetahui detailnya.
Membuat panel dan tata letak kustom
Untuk membuat panel kustom yang tidak didukung oleh Compose untuk XR, Anda dapat bekerja
langsung dengan instance PanelEntity dan grafik tampilan menggunakan
API SceneCore.