SpatialPanel, uygulamanızın içeriğini görüntülemenize olanak tanıyan bir alt alan oluşturulabiliridir. Örneğin, video oynatmayı, sabit görüntüleri veya diğer içerikleri uzamsal bir panelde görüntüleyebilirsiniz.
Üç boyutlu panelin boyutunu, davranışını ve konumunu değiştirmek için SubspaceModifier simgesini kullanabilirsiniz.
Üç boyutlu panel oluşturma
Aşağıdaki örnekte, uzamsal panelin nasıl oluşturulacağı gösterilmektedir.
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 ) } }
Kodla ilgili önemli noktalar
SpatialPanelAPI'leri alt uzayda birleştirilebilir öğeler olduğundan bunlarıSubspaceiçinde çağırmanız gerekir. Bu yöntemleri alt uzay dışında çağırmak istisna oluşturur.SpatialPanelboyutu,SubspaceModifierüzerindekiheightvewidthspesifikasyonları kullanılarak ayarlanmıştır. Bu özelliklerin belirtilmemesi, panel boyutunun içeriğinin ölçümlerine göre belirlenmesine olanak tanır.movablealt uzay değiştiricisi ekleyerek kullanıcının paneli taşımasına izin verin.resizablealt uzay değiştiricisi ekleyerek kullanıcının paneli yeniden boyutlandırmasına izin verin.- Boyutlandırma ve konumlandırma ile ilgili ayrıntılar için spatial panel tasarımı kılavuzumuzu inceleyin. Kod uygulamayla ilgili daha ayrıntılı bilgi için referans dokümanlarımızı inceleyin.
movable değiştiricisinin işleyiş şekli
Kullanıcı bir paneli kendisinden uzaklaştırdığında, movable değiştiricisi varsayılan olarak paneli, ana alanda sistem tarafından yeniden boyutlandırılan panellere benzer şekilde ölçeklendirir. Tüm alt içerikler bu davranışı devralır. Bu özelliği devre dışı bırakmak için shouldScaleWithDistance parametresini false olarak ayarlayın.
Üç boyutlu düzene birden fazla üç boyutlu panel ekleme
SpatialRow, SpatialColumn, SpatialBox ve SpatialSpacer kullanarak birden fazla üç boyutlu panel oluşturabilir ve bunları üç boyutlu bir düzene yerleştirebilirsiniz.
Aşağıdaki kod örneğinde bunun nasıl yapılacağı gösterilmektedir.
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 ) } }
Kodla ilgili önemli noktalar
SpatialRow,SpatialColumn,SpatialBoxveSpatialSpacer, alt uzayda birleştirilebilir öğelerdir ve bir alt uzaya yerleştirilmelidir.- Düzeninizi özelleştirmek için
SubspaceModifiersimgesini kullanın. - Bir satırda birden fazla panel içeren düzenlerde, panellerin kullanıcıyı çevrelemesi için
SubspaceModifierkullanarak 825 dp'lik bir eğri yarıçapı ayarlamanızı öneririz. Ayrıntılı bilgi için tasarım kılavuzumuzu inceleyin.
Özel paneller ve düzenler oluşturma
XR için Compose tarafından desteklenmeyen özel paneller oluşturmak istiyorsanız SceneCore API'lerini kullanarak doğrudan PanelEntity örnekleri ve sahne grafiğiyle çalışabilirsiniz.