Alt alan, uygulamanızdaki 3D alanın bir bölümüdür. Bu bölümde 3D modeller yerleştirebilir, 3D düzenler oluşturabilir ve normalde 2D olan içeriklere derinlik katabilirsiniz. Bir alt alan yalnızca uzamsallaştırma etkinleştirildiğinde oluşturulur. Ev Alanı'nda veya XR olmayan cihazlarda, bu alt alandaki tüm kodlar yoksayılır.
Düzeninizi oluşturmak ve 2D içerikleri 3D alana yerleştirmek için SpatialPanel, SpatialRow ve SpatialColumn gibi alt alan composable'larını kullanabilirsiniz. 3D içerik yerleştirmek için uygun Subspace Composable'ı kullanın. Örneğin, 3D modeller için SceneCoreEntity, stereo görüntüler için SpatialExternalSurface kullanın. Orbiter veya SpatialDialog gibi bazı XR bileşenleri, 2D kullanıcı arayüzü hiyerarşinizin herhangi bir yerinde kullanılabilen standart 2D composable'lardır. Ancak SubspaceComposable, uygulamanızın alt alanında çağrılmalıdır. Bunu yapmak için Subspace alt alanı oluşturulabilir öğesini kullanın.
Alt alan hiyerarşileri hakkında
En üst düzey Subspace, uygulamanız tarafından çağrılan en dıştaki alt uzaydır.
Subspace'e yapılan her çağrı, yeni ve bağımsız bir Spatial UI hiyerarşisi oluşturur.
İçine yerleştirildiği üst öğelerin uzamsal konumunu, yönünü veya ölçeğini devralmaz.Subspace
SpatialPanel, Orbiter, SpatialPopup veya başka bir bileşenin içine yerleştirilmiş ya da iç içe yerleştirilmiş bir Subspace oluşturmak için PlanarEmbeddedSubspace kullanın.
PlanarEmbeddedSubspace ile Subspace arasında iki temel fark vardır:
- Bu işlevler, çağrıldıkları 2D düzende yer alır. Bu, alt alanın yüksekliğinin ve genişliğinin 2 boyutlu üst düzeninin yüksekliği ve genişliği ile sınırlanacağı anlamına gelir.
- Bunlar, çağrıldıkları öğenin alt öğeleri gibi davranır. Bu, bir
SpatialPaneliçinde iç içe yerleştirilmiş bir alt uzayı çağırdığınızda bu alt uzayın, çağrıldığıSpatialPanelöğesinin alt öğesi olduğu anlamına gelir.
PlanarEmbeddedSubspace'ın bu davranışları sayesinde aşağıdaki gibi özellikler kullanılabilir:
- Çocuğu üst öğeyle birlikte taşıma
- Çocuğun konumunu, uzaklık kullanılarak telafi etme
SubspaceModifier - 2D kullanıcı arayüzünüzün üzerinde duran ve 2D düzendeki uygun alanın yüksekliği ve genişliğiyle eşleşen bir 3D nesne sunma
Bir alt alan için düzenleri uyarlama
Android XR'da uygulamanızın düzeni, varsayılan olarak Tam Alan Modu'nda Subspace'ın VolumeConstraints ile sınırlıdır. Bu nedenle, kullanıcının görebileceği alan miktarını göz önünde bulundurmalı ve düzeninizi buna göre ayarlamalısınız. recommendedContentBoxInFullSpace, içeriğin kullanıcının görüş alanına yerleştirilebilmesi için ActivitySpace içindeki sınırlayıcı kutunun belirli boyutlarını sağlar.
Uygulamanızın ana içeriği bu kutunun içinde yer almalıdır. Önerilen sınırları aşması gereken içeriğiniz varsa kullanıcıları başlarını hareket ettirerek alanı keşfetmeye teşvik eden bir düzen kullanabilirsiniz. recommendedContentBoxInFullSpace öğesinin varsayılan kısıtlaması, SubspaceModifier.requiredSizeIn gibi özel bir boyuta dayalı değiştirici uygulanarak geçersiz kılınabilir. Sınırsız davranış için allowUnboundedSubspace = true değerini ayarlayın.
Gerekli boyutları almak için mevcut oturum kullanılarak recommendedContentBoxInFullSpace çağrısı yapılır. Aşağıdaki örneğe bakın:
val session = LocalSession.current session?.scene?.activitySpace?.recommendedContentBoxInFullSpace
Uygulamanıza alt alan ekleme
Aşağıdaki kod örneğinde, uygulamanıza Subspace ve PlanarEmbeddedSubspace öğelerinin nasıl ekleneceği gösterilmektedir:
setContent { // This is a top-level subspace Subspace { SpatialPanel { MyComposable() } } }
@Composable private fun MyComposable() { Row { PrimaryPane() SecondaryPane() } } @Composable private fun PrimaryPane() { // This is an embedded subspace, because PrimaryPane is in a SpatialPanel // and that SpatialPanel is in the top-level Subspace PlanarEmbeddedSubspace { SpatialPanel {} } }
Daha fazla bilgi için Subspace ve PlanarEmbeddedSubspace ile ilgili tam referans belgelerine bakın.