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 aksi takdirde 2D olan içeriklere derinlik katabilirsiniz. Bir alt alan yalnızca uzamsallaştırma etkinleştirildiğinde oluşturulur. Ana Sayfa Alanı'nda veya XR olmayan cihazlarda, bu alt alan içindeki tüm kodlar yok sayılır.
Düzeninizi oluşturmak ve 2D içeriği 3D alana yerleştirmek için SpatialPanel, SpatialRow ve SpatialColumn gibi alt alan oluşturulabilirlerini 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ı composable'ını 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 öğesine yapılan her çağrı, yeni ve bağımsız bir Spatial UI hiyerarşisi oluşturur.
İçine yerleştirildiği
Subspace üst öğelerin uzamsal konumunu, yönünü veya ölçeğini devralmaz.
SpatialPanel, Orbiter, SpatialPopup veya başka bir bileşenin içine yerleştirilmiş ya da iç içe Subspace oluşturmak için PlanarEmbeddedSubspace kullanın.
PlanarEmbeddedSubspace ile Subspace arasında iki temel fark vardır:
- Çağrıldıkları 2D düzende yer alırlar. Bu, alt alanın yüksekliğinin ve genişliğinin 2D üst yerleşiminin 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ğırırsanız 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 ana varlıkla 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'de uygulamanızın düzeni, varsayılan olarak Tam Ekran 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, ActivitySpace içindeki sınırlayıcı kutunun belirli boyutlarını sağlar. Böylece içerik, kullanıcının görüş alanına yerleştirilebilir.
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 referans belgelerinin tamamını inceleyin.