XR için Jetpack Compose

Android XR'ın uzamsal özelliklerinden yararlanan uzamsal kullanıcı arayüzü düzenlerini bildirimsel olarak oluşturun.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta Sürümü Alfa Sürümü
3 Aralık 2025 - - - 1.0.0-alpha09

Bağımlılıkları bildirme

XR Compose'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.

Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:

Eski

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-alpha09"

    // Use to write unit tests
    testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha09"
}

Kotlin

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-alpha09")

    // Use to write unit tests
    testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha09")
}

Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme başlıklı makaleyi inceleyin.

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.

Sürüm 1.0

Sürüm 1.0.0-alpha09

3 Aralık 2025

androidx.xr.compose:compose:1.0.0-alpha09 ve androidx.xr.compose:compose-testing:1.0.0-alpha09 yayınlandı. 1.0.0-alpha09 sürümü bu commit'leri içerir.

API Değişiklikleri

  • İçeriğin her zaman kullanıcıya dönük olmasını sağlayan LookAtUser ve Billboard değiştiricilerini ekleme (I49b99)
  • Tıklamaların ve diğer 3D giriş etkinliklerinin algılanmasına olanak tanıyan InteractionPolicy ile SpatialExternalSurfaces ve SpatialPanels arasında bir InteractionPolicy ayarlama özelliği ekler. (Iae155)
  • Dp değerleri olarak genişlik, yükseklik ve derinlik ile boyut ve requiredSize değiştirici aşırı yüklemesi eklendi. (I92f79)
  • ParentLayoutParamsModifier arayüzü artık DelegatableSubspaceNode. (I1a6d4)
  • ApplicationSubspace, Subspace API lehine kullanımdan kaldırıldı.
    • Subspace API davranışı, yalnızca önerilen duruş ve ölçekte uygulama genelinde bir alt alan sağlayacak şekilde değiştirildi.
    • PlanarEmbeddedSubspace API, 2D bağlamlarda yerleştirilmiş alt uzaylar sağlamak için kullanıma sunulmuştur. (Id3343)
  • SubspaceModifier.Node API'sine shouldAutoInvalidate işareti eklendi. (I93902)
  • required(Size|Width|Depth|Height)Geliştiricilerin, üst öğenin gelen ölçüm kısıtlamalarını dikkate almadan bir @SubspaceComposable boyutunu belirli bir aralıkla sınırlamasına olanak tanıyan API'ler eklendi. (Ifaa78)
  • @SubspaceComposable boyutunun değiştiğinde geliştiricilerin tepki vermesi için basit ve odaklanmış bir geri çağırma sağlayan SubspaceModifier.onSizeChanged eklendi. (I994f9)
  • Volume API kaldırıldı. Volume API yerine SceneCoreEntity API kullanılmalıdır. (I4162b)
  • SubspaceLayoutModifierNode.requestRelayout öğesini invalidateMeasurement/invalidatePlacement olarak ayırın. (I14805)
  • Geliştiricilerin glTF'leri Compose'da oluşturmasına olanak tanıyan SpatialGltfModel API'si eklendi. (Icc91f)
  • glTF'leri kolayca oluşturmak için SpatialGltfModel composable API'si kullanıma sunuldu (Iade67).

Hata Düzeltmeleri

  • SceneCoreEntity uygulamasındaki düzen hatası düzeltildi. Artık kısıtlamalarına uygun şekilde yanıt verecektir. (I11bb8)
  • Jxr-compose modüllerini Compile sdk = 34'ye düşürün (I2d5db)

Sürüm 1.0.0-alpha08

22 Ekim 2025

androidx.xr.compose:compose:1.0.0-alpha08 ve androidx.xr.compose:compose-testing:1.0.0-alpha08 yayınlandı. 1.0.0-alpha08 sürümü bu commit'leri içerir.

API Değişiklikleri

  • ResizePolicy, onResizeUpdate ve onResizeEnd'ü kabul etmek için onResizeStart olarak değiştirildi. (I7e21f)

Hata Düzeltmeleri

  • Bir etkinliği alt alanla yok ederken kilitlenmeyi önleme. (I595a1)

Sürüm 1.0.0-alpha07

24 Eylül 2025

androidx.xr.compose:compose:1.0.0-alpha07 ve androidx.xr.compose:compose-testing:1.0.0-alpha07 yayınlandı. 1.0.0-alpha07 sürümü bu commit'leri içerir.

API Değişiklikleri

  • SpatialMainPanel için KDocs iyileştirildi. (I27b70, b/444467891)
  • SpatialRow ve SpatialColumn gibi 3D düzenlerde çocukları ana eksen boyunca düzenlemek için SpatialArrangement özelliği kullanıma sunuldu. Bu yeni API, 2D Compose'daki Start, End, Center, SpaceBetween, SpaceAround ve SpaceEvenly gibi düzenleme seçeneklerini sunar. Ayrıca, soldan sağa ve sağdan sola düzen yönleri için tam destek sağlar. (I7db38, b/436289959)
  • SubspaceModifier.Node için temel bir arayüz eklendi. Böylece, tür güvenliği ve uzantı arayüzlerinin kullanılabilirliği iyileştirildi. Örneğin:
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (şirket içi) (Iede00, b/440599394, b/440599394)
  • Kısıtlamayı kaldırma SpatialExternalSurface (I33315, b/439646773)
  • Subspace composable'larına SubspaceModifier parametresini ekleyin ve kısıtlamalar parametresini boyutla ilgili SubspaceModifiers ile değiştirin.SubspaceModifier allowUnboundedSubspace doğruysa alt alanlarda sınırsız kısıtlamalar olabilir. (Ib06e6, b/433331675)
  • DragPolicy() ve ResizePolicy(), SpatialPanel ve SpatialExternalSurface API'sinin (I397bf, b/437924639) bir parçası olduğundan taşınabilir ve yeniden boyutlandırılabilir SubspaceModifiers desteği sonlandırıldı.
  • Uzamsal düzenlerde LayoutDirection için destek eklendi. SpatialAlignment kullanılarak oluşturulan composable'lar artık öğeleri hem soldan sağa (LTR) hem de sağdan sola (RTL) bağlamlarda doğru şekilde konumlandıracak. (I964bb, b/436300273)
  • Bu davranışların yalnızca desteklenen kapsayıcılara uygulanabilmesini sağlamak için Panel API'lerine Resizable ve Movable parametrelerini ekleyin. (Id491c)
  • Genişlik, yükseklik ve derinlik için tam minimum ve maksimum kısıtlamalar belirlemenize olanak tanıyan sizeIn, widthIn, heightIn, depthIn SubspaceModifiers özellikleri eklendi. (I1af09, b/433330761)

Sürüm 1.0.0-alpha06

13 Ağustos 2025

androidx.xr.compose:compose:1.0.0-alpha06 ve androidx.xr.compose:compose-testing:1.0.0-alpha06 yayınlandı. 1.0.0-alpha06 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Yaşam döngüsü sahibi yok edildiğinde ComposeXrOwnerLocals öğesini yeniden oluşturun. (9123ce1)

Sürüm 1.0.0-alpha05

30 Temmuz 2025

androidx.xr.compose:compose:1.0.0-alpha05 ve androidx.xr.compose:compose-testing:1.0.0-alpha05 yayınlandı. 1.0.0-alpha05 sürümü bu commit'leri içerir.

Yeni Özellikler

  • SubspaceComposable ek açıklama sınıfını herkese açık hale getirdi. (Ic2a34, b/399432430)
  • 180 ve 360 derecelik küreleri temsil eden iki yeni SpatialExternalSurface Composables. (I40ef2, b/391705799)
  • SubspaceModifier.aspectRatio eklendi (Ide5ab, b/399729509, b/414762147)
  • SceneCoreEntity API'si, SceneCore ile Compose for XR arasındaki birlikte çalışabilirliği artırmak için eklendi. (I50bb3, b/423020989)
  • Ölçeklendirilmemiş VE GravityAligned özelliğini desteklemek için GravityAlignedsubspace API'si sağlandı (I07359)

API Değişiklikleri

  • SpatialDialog(), SpatialDialogProperties.dismissOnBack tuşuna basma yapılandırmasını izler. (Ib453b, b/416797132)
  • minimumPanelDimension, Metre cinsinden gösterildiği için Dimensions(0.1f, 0.1f, 0.1f) yeni varsayılan boyutuna güncellendi. (Ib852a)
  • Alt alanlar ve Orbiters artık ana alanda ve uygulama arka plandayken kendi iç durumlarını koruyacak. Ev alanı modunda Subspace, tam alan moduna geçişe hazırlanmak için sahnesini kurmaya devam eder. (I40317, b/416037751)
  • SpatialDialogs artık uygulama arka plandayken durumlarını koruyacak. (I6aa56)
  • ApplicationSubspace artık önerilen ölçeğini ve konumunu sistemden devralacak. (I4565f, b/418834194)
  • SubspaceComposable karakteri SubspaceComposable olmayan bir bağlamda kullanıldığında daha iyi bir hata mesajı eklendi ve hata daha erken tetikleniyor. (Iee2ae, b/416484684)
  • Composable API'ler yanlış kullanıldığında uyarılar genellikle gözden kaçırıldığından ExperimentalSubspaceVolumeApi uyarısını hata olarak güncelledik. (I427aa, b/424864286)
  • Subspace ve ApplicationSubspace artık recommendedContentBoxInFullSpace ile sınırlanıyor. Daha önce SpatialUser'nın görüş alanı ile sınırlıydı. (I41015, b/423074142)
  • Sabit kodlanmış boyut kullanılmaması için SpatialElevation öğesini minimum boyutu kullanacak şekilde güncelleyin (I2dbe6, b/427785338)
  • Önemli bir değişken değiştirildiğinde güncellenmesi için SpatialAcitivityPanel ile ilgili antrenman yapma şeklimizi güncelleyin. (I0f64d, b/427999029)
  • Varsayılan kısıtlama değerlerini eşdeğer olarak ayarlamak için VolumeConstraints.Unbounded öğesini kaldırın. (Ie24ec, b/407938414)
  • SpatialFeatheringSize artık herkese açık değil (I1c15b, b/399432430)
  • Compose'un Placeable öğesinden ayırt etmek için XR Placeable öğesini SubspacePlaceable olarak yeniden adlandırdı. (I74874)
  • Orbiter ayarlarını kaldırma ve shouldRenderInNonSpatial öğesini yeni bir parametre olarak ekleme. Ayrıca, EdgeOffset sınıfını kaldırıp Orbiter() işlevlerini birleştirmek için orbiterOffsetType sınıfını yeni bir parametre olarak ekliyoruz. Ayrıca OrbiterEdge dosyasını ContentEdge olarak yeniden adlandırın. (Iebf3d)
  • Türün Compose'un Measurable türünden ayırt edilmesi için Measurable, SubspaceMeasurable olarak yeniden adlandırıldı. (I9726c)
  • MeasureResult dosyasını SubspaceMeasureResult olarak yeniden adlandırın (I9f34d)
  • setSubspaceContent API'si kaldırıldı. Bunun yerine Subspace composable ile Compose'un setContent kullanılması önerilir. (Ifff4c, b/421427391, b/421427391)
  • MeasurePolicy, SubspaceMeasurePolicy olarak yeniden adlandırıldı. (I37a9b, b/422553904)
  • Varsayılanlar olmadan üye ekleyemeyeceğimiz için SubspaceSemanticsInfo'yı kapalı bir arayüze dönüştürün. (I372f9, b/423704068)
  • SpatialExternalSurface dokümanları güncellendi, ContentSecurityLevel, SurfaceProtection olarak yeniden adlandırıldı (I3c460, b/420982808)
  • Taşınabilir değiştirici için, sabitlemeye olanak tanıyan aşırı yüklenmiş oluşturucu sağlandı. (Ic0c70)
  • İpuçları için daha fazla konum sağlayıcı eklendi. Böylece geliştiriciler, ipucunun bağlantının üstünde, altında, solunda veya sağında yerleştirilip yerleştirilmeyeceğini kontrol edebilir. Şapka işaretleri için bir Şekil alan bir API ekleyin. Böylece daha fazla özel şekil sağlanabilir. (Ie513c, b/374766087, b/418854637)
  • CoreEntity, PublishedApi olarak kaldırıldı (Ifee05)

Hata Düzeltmeleri

  • SpatialDialog simgesinin oluşturulurken yanıp sönmesi sorunu düzeltildi. (Ife73c, b/401619909)
  • Etkinlik panelinin SpatialDialog ile karartılamaması sorunu düzeltildi. (I8ca6c, b/367442109)
  • XR iletişim kutusunda bazı içeriklerin gösterilmemesi sorunu düzeltildi (I17cd5, b/418062437).
  • İçerikte tıklandığında SpatialPopup simgesinin kapatılması sorunu düzeltildi. (If262c, b/417245722)
  • resizable().movable() ile zincirleme yapıldığında SpatialPanel'in yeni boyuta doğru şekilde yeniden boyutlandırılamaması sorunu düzeltildi. (I02ee3, b/422264230)
  • SpatialComposeVideoPlayer içindeki menüyle çakışan sabit topBar sorunu düzeltildi (Id33bc, b/427168167)
  • Sabit köşe yarıçapının oluşturulmaması sorunu düzeltildi (I975fe, b/428261830).

Sürüm 1.0.0-alpha04

7 Mayıs 2025

androidx.xr.compose:compose:1.0.0-alpha04 ve androidx.xr.compose:compose-testing:1.0.0-alpha04 yayınlandı. 1.0.0-alpha04 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Özel SubspaceModifier türlerinin kompozisyon yerel değerlerine erişmesine olanak tanıyan CompositionLocalConsumerSubspaceModifierNode arayüzü eklendi.
  • Compose AndroidView uygulama stilini izleyen ve önceki ViewBased SpatialPanel API'sinin desteğini sonlandıran yeni bir SpatialPanel API eklendi.
  • Sınırsız kısıtlamaları temsil eden VolumeConstraints.Unbounded eşlik eden nesnesi eklendi.
  • Uzamsallaştırılmış ses kaynağına izin vermek için SubspaceModifier.onPointSourceParams eklendi.
  • Uygulamanın mekansal içerik oluşturabileceği bir 3D alan tanımlamak için isteğe bağlı VolumeConstraints sunan herkese açık bir ApplicationSubspace eklendi. Varsayılan olarak, herhangi bir kısıtlama belirtilmezse alt uzay, SpatialUser'nın genişlik ve yükseklik açısından mevcut görüş alanıyla sınırlanır. Kullanıcılar, görüş alanı belirlenemezse kullanılacak kısıtlamalar sağlayabilir. Aksi takdirde, varsayılan görüş alanı genişliği ve yüksekliği değerleri kullanılır.
  • Stereoskopik içerik oluşturmak için kullanılabilecek SpatialExternalSurface eklendi. SpatialExternalSurface, değiştiricilerle (alfa hariç) ve kenar yumuşatma efektiyle özelleştirilebilir.
  • Kullanıcıların uzamsal işaretçinin simgesini ayarlamasına olanak tanıyan yeni bir pointerHoverIcon alt alan değiştiricisi eklendi.

API Değişiklikleri

  • Tüm Jetpack XR paketlerindeki RequiresApi(34) kısıtlaması kaldırıldı. Jetpack XR şu anda yalnızca API düzeyi 34 ve üzeri olan cihazlarda kullanılabildiğinden bu kısıtlama gereksizdi. (Iae0f8)
  • Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir. (Idb6b5)
  • Geriye doğru işleme artık yerleştirilmiş etkinlikler içermeyen uzamsal panellerde çalışacak. Geriye doğru işlemeyi kullanmak için android manifest dosyasında android:enableOnBackInvokedCallback="true" belirtmeniz gerekir.
  • Geriye dokunma artık uzamsal iletişim kutularında çalışacak. Geriye doğru işleme özelliğinin çalışması için Android manifestinde android:enableOnBackInvokedCallback="true" belirtmeniz gerekir.
  • Compose tabanlı ve View tabanlı SpatialPanel artık içeriklerine göre boyutlandırılabilir.
  • Geliştiriciler artık kendi özel SpatialElevationLevel değerlerini ayarlayabilir ve önceden tanımlanmış seviyelerle sınırlı değildir.
  • Orbiter yükseklik düzeyi artık elevation parametresi aracılığıyla özelleştirilebilir.
  • Alt alan, varsayılan olarak SpatialUser'nın genişlik ve yükseklik açısından görüş alanıyla sınırlandırılabilir. Görüş alanı belirlenemezse varsayılan görüş alanı genişliği ve yüksekliği değerleri kullanılır.
  • Movable değiştiricisine yeni geri çağırmalar onMoveStart ve onMoveEnd eklendi. onMoveStart ve onMoveEnd geri çağırmaları, kullanıcı taşınabilir değiştiriciyle birleştirilebilen bir alt alanı taşımaya başladığında ve taşımayı bitirdiğinde çağrılır.
  • name parametresi, SpatialRow ve SpatialPanel gibi coğrafi API'lerden kaldırıldı. Uzamsal Compose ağaçlarında hata ayıklamak için bunun yerine SubspaceModifier.testTag kullanın.
  • Yalnızca spatialElevationLevel ve content içeren SpatialPopup'nın desteklenmeyen aşırı yüklemesi kaldırıldı. Lütfen onDimissRequest simgesini destekleyen arayüzü kullanın.
  • Movable değiştiricisinden gelen onPoseChange geri çağırma kaldırıldı. Bunun yerine onMove politikasını kullanın.
  • SubspaceModifiers, ayrılmışsa veya şu anda ayrılıyorsa efektlerini artık uygulamaz.
  • Mevcut SpatialRow API'si SpatialRow ve SpatialCurvedRow olarak ikiye bölündü. Daha önce SpatialRow'nın curveRadius parametresini kullanıyorsanız artık aynı davranışı sunan SpatialCurvedRow parametresini kullanın.
  • MainPanel ve ActivityPanel, benzer şekilde yeni bir sistem görüntüsünde çalıştırıldığında artık başlık çubuğuna sahip değildir.
  • Alfa ve ölçek değiştiriciler artık yığılabilir ve son uygulanan alfa veya ölçek değeri için değerlerini çarpacaktır.
  • onPoseChange Taşınabilir değiştiriciden gelen geri çağırma, daha sorunsuz poz hareketi için optimize edildi.
  • Taşınabilir ve yeniden boyutlandırılabilir değiştiriciler artık durum değişikliklerinin yeniden oluşturmayı tetiklemesini sağlamak için geri çağırmalarını ana iş parçacığında gerçekleştirecek.
  • SubspaceLayout içindeki durum değişikliklerinin yeniden düzenlemeyi tetiklemesini sağlamak için düzen ve ölçü aşamalarına durum gözlemi eklendi.
  • Mevcut değiştiricilerin daha iyi yeniden kullanılması için optimize edilmiş değiştirici zinciri güncellemeleri.

Hata Düzeltmeleri

  • SpatialDialog gösterildiğinde scrimming durdurulur. (Ic4594)
  • Değiştirici düğümler ayrılmış durumdayken yapılan yeniden düzenleme istekleri artık yoksayılacak.
  • Movable ve Resizable değiştiricileri tarafından tetiklenen yeniden düzenleme aşamaları kaldırıldı.
  • Boyutlardan biri doğrudan veya düzen hesaplaması sırasında (ör. SpatialRow/SpatialColumn hesaplaması) sıfıra ayarlandığında oluşan MainPanel() composable'daki kilitlenme sorunu düzeltildi. Panel artık gizlenecek. Bu düzeltmenin özellikle düzen aşamasındaki kilitlenmeleri ele aldığını unutmayın. Panelin kullanıcı etkileşimi aracılığıyla sıfıra yeniden boyutlandırılması ayrı olarak ele alınacaktır. Gizli panelde kullanıcı arayüzü olanakları yok.
  • Yeniden boyutlandırılabilir değiştiriciden maintainAspectRatio ile ilgili sorun düzeltildi. En boy oranı korunmalıdır.
  • İç içe yerleştirilmiş alt uzayların tek bir kare için yanlış konumlandırılmasına neden olan sorun düzeltildi.
  • Yuvarlak köşelerin bazen uygulanması gerektiği halde uygulanmaması sorunu düzeltildi.
  • NestedSubspaces artık yanlış konumdaki bir karede görünmeyecek.

Sürüm 1.0.0-alpha03

26 Şubat 2025

androidx.xr.compose:compose:1.0.0-alpha03 ve androidx.xr.compose:compose-testing:1.0.0-alpha03, son alfa sürümünden bu yana önemli bir değişiklik yapılmadan yayınlandı. 1.0.0-alpha03 sürümü bu commit'leri içerir.

Sürüm 1.0.0-alpha02

12 Şubat 2025

androidx.xr.compose:compose:1.0.0-alpha02 ve androidx.xr.compose:compose-testing:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Etkinlik paneli, artık bir uzamsal iletişim kutusu etkinleştirildiğinde içeriğini karartabilir.
  • Orbiter API artık SubspaceComposable bağlamlarında kullanılabilir ve Orbiters'ı en yakın SubspaceLayout tabanlı composable üst öğeye ekler.
  • Özelleştirilebilen konum tabanlı değiştiricilere izin vermek için LayoutCoordinatesAwareModifierNode tanıtıldı.
  • SubspaceModifier.Node için ekleme/ayırma yaşam döngüsü yöntemleri eklendi.
  • Hareketli değiştiriciye scaleWithDistance eklendi. scaleWithDistance etkinleştirildiğinde, taşınan alt alan öğesi büyür veya küçülür. Ayrıca, hareketten önce sahip olduğu açık ölçeği de korur.

API Değişiklikleri

  • SessionCallbackProvider, SpatialCapabilities lehine kaldırıldı.

Diğer değişiklikler

  • minSDK değeri 24'e düşürüldü. Tüm Jetpack XR API'leri, çalışma zamanında API 34 gerektirmeye devam eder.
  • Orbiter EdgeOffset.inner, EdgeOffset.outer ve EdgeOffset.overlap oluşturucular artık @Composable yöntemleri değildir. Bu sayede, birleştirilemeyen bağlamlarda kullanılabilirler.
  • Uzamsal yükseklik seviyelerini en yeni kullanıcı deneyimi spesifikasyonuna uyacak şekilde güncelleyin.
  • SubspaceSemanticsInfo arayüzünü MeasurableLayout'ye uygulayın.
  • SubspaceModifierElement, SubspaceModifierNodeElement olarak yeniden adlandırıldı.

Hata düzeltmeleri

  • SubspaceModifier sıralamasını sabitlemeye yönelik düzeltmeler. SubspaceModifier daha güvenilir bir şekilde çalışmalıdır. Öteleme, döndürme, ölçeklendirme, taşınabilir ve yeniden boyutlandırılabilir değiştiriciler artık herhangi bir sırada kullanılabilir.

Sürüm 1.0.0-alpha01

12 Aralık 2024

androidx.xr.compose:compose-*1.0.0-alpha01 iptal edilir.

İlk Sürümün Özellikleri

  • XR için Jetpack Compose'un ilk geliştirici sürümü. İster mevcut bir 2D uygulamayı XR'ye taşıyor ister sıfırdan yeni bir XR uygulaması oluşturuyor olun, XR'de mekansal kullanıcı arayüzü düzenleri oluşturmak için satırlar ve sütunlar gibi tanıdık Compose kavramlarını kullanın. Bu kitaplık, mevcut 2D Compose veya Görünümler tabanlı kullanıcı arayüzünüzü uzamsal bir düzene yerleştirmenize olanak tanıyan alt alan ve uzamsal composable'lar (ör. uzamsal paneller ve yörüngeler) sağlar. 3D modeller gibi SceneCore öğelerini kullanıcı arayüzünüze göre yerleştirmenize olanak tanıyan Volume alt alanı composable'ı kullanıma sunulur. Daha fazla bilgiyi bu geliştirici kılavuzunda bulabilirsiniz:

    • Subspace: Bu composable, uygulamanızın kullanıcı arayüzü hiyerarşisinde herhangi bir yere yerleştirilebilir. Böylece, dosyalar arasındaki bağlamı kaybetmeden 2D ve uzamsal kullanıcı arayüzü düzenlerini koruyabilirsiniz. Bu sayede, mevcut uygulama mimarisi gibi öğeleri tüm kullanıcı arayüzü ağacınızda durumu yükseltmenize veya uygulamanızın mimarisini yeniden tasarlamanıza gerek kalmadan XR ve diğer form faktörleri arasında daha kolay paylaşabilirsiniz.

    • SpatialPanel: SpatialPanel, uygulama içeriğini görüntülemenize olanak tanıyan bir alt uzay bileşenidir. Örneğin, video oynatma, hareketsiz görüntüler veya diğer içerikleri SpatialPanel'de görüntüleyebilirsiniz.

    • Orbiter: Orbiter, uzamsal bir kullanıcı arayüzü bileşenidir. İlgili bir uzamsal panele eklenmek üzere tasarlanmıştır ve bu uzamsal panelle ilgili gezinme ve bağlamsal işlem öğelerini içerir. Örneğin, video içeriğini göstermek için bir uzamsal panel oluşturduysanız yörüngeye video oynatma kontrolleri ekleyebilirsiniz.

    • Hacim: 3D modeller gibi SceneCore öğelerini kullanıcı arayüzünüze göre yerleştirin.

  • Uzamsal Yerleşim: SpatialRow, SpatialColumn, SpatialBox ve SpatialLayoutSpacer kullanarak birden fazla uzamsal panel oluşturup bunları Uzamsal Yerleşim'e yerleştirebilirsiniz. Düzeninizi özelleştirmek için SubspaceModifier simgesini kullanın.

  • Uzamsal kullanıcı arayüzü bileşenleri: Bu öğeler 2D kullanıcı arayüzünüzde yeniden kullanılabilir ve uzamsal özellikleri yalnızca uzamsal özellikler etkinleştirildiğinde görünür.

    • SpatialDialog: Panel, yükseltilmiş bir iletişim kutusu göstermek için z derinliğinde biraz geriye itilir.
    • SpatialPopUp: Panel, yükseltilmiş bir pop-up göstermek için z derinliğinde biraz geriye itilir.
    • SpatialElevation: SpatialElevationLevel, yüksekliği eklemek için ayarlanabilir.
  • SpatialCapabilities: Kullanıcılar uygulamanızla veya sistemle etkileşimde bulundukça mekansal özellikler değişebilir, hatta uygulamanızın kendisi tarafından da değiştirilebilir (ör. Ev Alanı'na veya Tam Alan'a geçiş). Sorun yaşamamak için uygulamanızın, mevcut ortamda hangi API'lerin desteklendiğini belirlemek üzere LocalSpatialCapabilities.current olup olmadığını kontrol etmesi gerekir. isSpatialUiEnabled: Üç boyutlu kullanıcı arayüzü öğeleri (ör. SpatialPanel) isContent3dEnabled: 3D nesneler isAppEnvironmentEnabled: Ortam isPassthroughControlEnabled: Uygulamanın, geçiş durumunu kontrol edip edemeyeceği isSpatialAudioEnabled: Üç boyutlu ses

Bilinen Sorunlar

  • Şu anda XR için Jetpack Compose'u kullanmak üzere minimum SDK sürümü 30 olmalıdır. Geçici çözüm olarak, 23 minSDK ile derleme ve çalıştırma yapabilmek için aşağıdaki manifest girişini <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> ekleyebilirsiniz.
  • Jetpack XR uygulamalarının şu anda AndroidManifest'te android.permission.SCENE_UNDERSTANDING izni istemesi gerekiyor.
  • Bir uygulama, manifest dosyasındaki PROPERTY_XR_ACTIVITY_START_MODE özelliğini kullanarak doğrudan Tam Alan'da başlatıldığında Etkinlikler/Uygulamalar, Tam Alan'a geçmeden önce başlangıçta Ev Alanı'nda açılır.
  • Volume Composables'daki glTF'ler başlangıçta yanlış konumda titreyebilir.
  • Önemli ölçüde taşınmış bir panelde SpatialDialog kullanmak, içeriği yanlış yöne iter.