Alt uzay, uygulamanızdaki 3D alanın bir bölümüdür. Burada 3D modeller yerleştirebilir, 3D düzenler oluşturabilir ve normalde 2D olan içeriklere derinlik ekleyebilirsiniz. Alt uzay yalnızca uzamsallaştırma etkinleştirildiğinde oluşturulur. Home Space'te veya XR olmayan cihazlarda, bu alt uzaydaki tüm kodlar yoksayılır.
Üç boyutlu düzenler ve alt uzayda kullanabileceğiniz bileşenler hakkında daha fazla bilgi için üç boyutlu bileşenler başlıklı makaleyi inceleyin.
Alt alan hiyerarşileri hakkında
Üst düzey Subspace, uygulamanız tarafından çağrılan en dıştaki alt uzaydır.
Bir Subspace yöntemine yapılan her çağrı, yeni ve bağımsız bir Spatial UI hiyerarşisi oluşturur. İçinde yer aldığı üst öğenin Subspace uzamsal konumunu, yönünü veya ölçeğini devralmaz.
Bir SpatialPanel, Orbiter, SpatialPopup veya başka bir bileşen içinde yerleşik ya da iç içe yerleştirilmiş bir Subspace oluşturmak için PlanarEmbeddedSubspace kullanın.
PlanarEmbeddedSubspace, Subspace'dan iki önemli farkla ayrılır:
- Çağrıldıkları 2D düzene katılırlar. Bu, alt alanın yüksekliğinin ve genişliğinin, 2D üst yerleşiminin yüksekliği ve genişliğiyle sınırlanacağı anlamına gelir.
- Çağrıldıkları varlığın alt öğeleri olarak davranırlar. Yani
SpatialPaneliçinde iç içe yerleştirilmiş bir alt alan composable'ını çağırırsanız bu alt alan, çağrıldığıSpatialPanelöğesinin alt öğesi olur.
PlanarEmbeddedSubspace'ın bu davranışları, aşağıdaki gibi özellikler sağlar:
- Alt varlığı ana varlıkla birlikte taşıma
- Ofset kullanılarak alt öğenin konumu ofsetleniyor
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
Alt alan için düzenleri uyarlama
Android XR'da, uygulamanızın düzeni varsayılan olarak Tam Ekran Alanı modunda Subspace'nin VolumeConstraints değerine bağlıdır. Bu nedenle, kullanıcıya sunulan görünür 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 kutuya sığmalıdır. Önerilen sınırları aşması gereken içerikleriniz 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 boyuta dayalı özel bir değiştirici uygulanarak geçersiz kılınabilir. Sınırsız davranış için allowUnboundedSubspace = true değerini ayarlayın.
Gerektiğinde bu belirli boyutları almak için mevcut Session'ı kullanarak recommendedContentBoxInFullSpace yöntemini çağırın. 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'nin 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.