Jetpack Compose untuk XR
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 21 Oktober 2026 | - | - | 1.0.0-beta02 | - |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada XR compose, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:
Groovy
dependencies { implementation "androidx.xr.compose:compose:1.0.0-beta02" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta02" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-beta02") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta02") }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.0
Versi 1.0.0-beta02
21 Oktober 2026
androidx.xr.compose:compose:1.0.0-beta02 dan androidx.xr.compose:compose-testing:1.0.0-beta02 dirilis. Versi 1.0.0-beta02 berisi commit ini.
Perubahan API
- Library kini menargetkan Kotlin 2.2 dan memerlukan kotlinc 2.2 (I82396, b/498369605)
- Mengganti nama parameter
halfLifeMsdariFollowMode.soft()menjadihalfLifeMillis. (I39187) - Mengonversi
PitchLimitsmenjadi@JvmInline value classyang mengemas dua float ke dalamLonguntuk menghilangkan alokasi objek. (Id43c3) - Menambahkan parameter baru untuk
FollowMode.soft: parameterhalfLifeMs,startDelay, danstartThresholds. Menghapus parameterdurationMskarena tidak lagi diperlukan saat kita beralih dari algoritmasmoothStepke algoritmaexponentialDecay. (If0140) - Menghapus overload
SpatialActivityPanelyang tidak digunakan lagi. Gunakan overloadSpatialActivityPanelyang menerimaSpatialActivityPanelController. (I5abc3) - Aktifkan transisi antara konten Composable 3D dan 2D dalam satu Aktivitas di
FullSpaceMode. Perubahan ini dibatasi olehSpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled. (I4e237) - Mengekspos overload
Subspaceeksperimental yang menggunakan parameterFollowTargetuntuk mendukung konten berikut. (Iec1a9) - Menghapus pengubah yang dapat dipindahkan yang tidak digunakan lagi. Gunakan pengubah movable baru yang menerima
MovePolicybaru sebagai parameter. (Ib135d) - Menghapus
DragPolicyyang tidak digunakan lagi. Sebagai gantinya, gunakanSubspaceModifier.movable(). (I108d4) - Menghentikan penggunaan overload
SliderdanRangeSliderstateless dan menggantinya dengan versi stateful. Mengganti namaactiveRangeStartdanactiveRangeEnddiRangeSliderStatemenjadistartValuedanendValue, serta menghentikan penggunaan Slider API eksperimental dan yang tidak dipromosikan yang lebih lama denganDeprecationLevel.HIDDEN. (If8995)
Perbaikan Bug
- Memperbaiki
RotateToLookAtUserdengan memperkenalkanposeInActivitySpaceuntuk memastikan penghitungan pose yang benar untuk semua jenis subruang, termasuk yang dilampirkan ke anchor atau pengguna.Ica367b - Memperbaiki error Batasan saat Orbiter dipasang ke panel besar (I8c4bf)
- Memperbaiki bug di
SubspaceLayoutNodesaatremoveAll()menyebabkan alokasiArrayListyang tidak perlu. Juga memperbaiki performa penghitungan kedalaman. I34a10a - Dependensi
androidx.lifecycle:lifecycle-runtimediupdate ke 2.10.0. Versi ini diperlukan agar pemeriksaan lint runtime siklus proses yang dipaketkan dapat berjalan dengan AGP versi 9.5.0-alpha04 atau yang lebih baru. (I99bfd, b/556807521) - Meningkatkan kdoc terkait
AudioOutputProvideruntuk menekankan bahwa kdoc tidak boleh digunakan kembali dengan beberapa instanceExoPlayer(I6b18e) - Memperbaiki masalah ejaan dan tata bahasa kdoc kecil (Id3ba6)
Masalah Umum
androidx.xr.composeversi ini memiliki dependensi padaandroidx.xr.scenecore:1.0.0-rc01, yang memiliki kebocoran memori yang diketahui. Dalam konfigurasi build, Anda dapat secara eksplisit mengganti dependensiSceneCoreke versi1.0.0, yang menyertakan perbaikan untuk kebocoran memori.
Versi 1.0.0-beta01
23 September 2026
androidx.xr.compose:compose:1.0.0-beta01 dan androidx.xr.compose:compose-testing:1.0.0-beta01 dirilis. Versi 1.0.0-beta01 berisi commit ini.
Perubahan API
- Menghapus
DragPolicyyang tidak digunakan lagi. Sebagai gantinya, gunakanSubspaceModifier.movable(). (I108d4) - Menghapus
ResizePolicyyang tidak digunakan lagi dan penggunaannya diSpatialPaneldanSpatialExternalSurface. Menghapus fungsiSubspaceModifier.resizableyang tidak digunakan lagi. GunakanSubspaceModifier.resizablebaru denganResizePolicybaru. (I59e6b) - Menambahkan parameter
isPitchUpdateEnableduntuk memungkinkan pengaktifan atau penonaktifan pelacakan nada secara independen. (Ie9e86) - Menghapus nullability
pitchLimitsdan mengganti namaPitchLimits.UNCONSTRAINEDmenjadiPitchLimits.FullRange. (I0154f) ExposedDropdownMenukini menjadi fungsi ekstensi diExposedDropdownMenuBoxScope, bukan anggota. Anda mungkin perlu memperbarui kode dengan impor baru. (Ie8a65)- Menghapus class
SurfaceProtectionyang tidak digunakan lagi. Sebagai gantinya, gunakanSpatialExternalSurfaceProtection. (Iab2c6) - Fungsi Orbiter yang menggunakan
OrbiterPoseProvidertidak digunakan lagi dan digantikan dengan fungsi yang menggunakanSpatialAlignment. (I4d12b) SpatialActivityPanelkini memerlukanSpatialActivityPanelController(diinstansiasi menggunakanrememberSpatialActivityPanelController) untuk meluncurkan dan mengelola aktivitas tersemat. (Id25c6)- Menghapus parameter
upDirectiondarirotateToLookAtUserdan menambahkan parameter batasan rotasi (isYawUpdateEnableddanpitchLimits). (I1370a)
Perbaikan Bug
- Memperbaiki berbagai masalah
InteractionPolicy. Error terjadi jika peristiwa input terjadi tepat saat Composable atau turunan (misalnya Orbiter) memulai urutan penghapusan. Juga memperbaiki masalah saat turunan akan menerima peristiwa pengarahan kursor. (Ifc477) - Mengurangi ukuran panel di
RotateToLookAtUserActivityuntuk mencegah pemangkasan pada perangkat FOV yang lebih kecil. (I8d672)
Masalah Umum
- Ada masalah pada panel Compose XR, yaitu membuat banyak panel dalam satu Aktivitas dapat menyebabkan beberapa kerusakan pada apa yang dilihat, bahkan setelah panel dihancurkan.
Versi 1.0.0-alpha17
12 Agustus 2026
androidx.xr.compose:compose:1.0.0-alpha17 dan androidx.xr.compose:compose-testing:1.0.0-alpha17 dirilis. Versi 1.0.0-alpha17 berisi commit ini.
Perubahan API
- Hapus class nilai
Meter, yang digantikan olehvirtualPixelDensitydiScenecore. (I690ee) SpatialGltfModelAPI kini bersifat eksperimental dan harus diaktifkan untuk digunakan. (I4557e)- Membuat
systemresizable nullable (Ib0093) - Mengekspos
DensitydiSubspaceSemanticsInfountuk pengujian. (I2e826) - Mengganti nama opsi default
ResizePolicymenjadisystemdan menambahkan opsiDefaultbaru tanpa parameter (Ic8b16) - Menandai
FollowTargetsebagai eksperimental. SeluruhFollowingSubspaceAPI kini bersifat eksperimental. (Id4ee3) - Menghapus API
GltfAnimation(Ic2894) - Mengganti nama metode
MovePolicy.default()berparameter menjadiMovePolicy.system(). Memperkenalkan propertival MovePolicy.Defaultuntuk merepresentasikan perilaku gerakan default standar. (Iedcc9) - Memperluas persyaratan keikutsertaan
ExperimentalMoveAnchorPolicykePlaneSemanticdanPlaneOrientation(Ief927) - Menghapus
resetMinsdariVolumeConstraints.offset(Ib2f2f) - Menghapus fungsi
SceneCoreEntitySizeAdapteryang tidak digunakan lagi. (Ib6722) - Menghapus overload
Subspaceyang tidak digunakan lagi denganallowUnboundedSubspace. (I8e97f) - Menghapus overload pengubah semantik yang tidak digunakan lagi. (I4ac10)
Perbaikan Bug
- Memperbaiki masalah saat turunan
ComposabledenganInteractionPolicyyang terpasang memicu peristiwa input (Icdba6)
Versi 1.0.0-alpha16
15 Juli 2026
androidx.xr.compose:compose:1.0.0-alpha16 dan androidx.xr.compose:compose-testing:1.0.0-alpha16 dirilis. Versi 1.0.0-alpha16 berisi commit ini.
Perubahan API
- Menghapus API
ComponentOverride(I820c4) - API
GltfAnimationdanSpatialGltfModelAnimationtelah ditandai sebagai eksperimental. Beberapa properti diubah menjadi pengambil. (I8d689, b/524771027) - Memperbaiki perilaku kepadatan keseluruhan dengan menetapkan konversi antara Meter dan piksel agar konstan. Meter.kt yang tidak digunakan lagi,
Session.scene.virtualPixelDensitykini dapat digunakan sebagai alternatif. (I122ff, b/430097855, b/474168798) - Mengupdate pengubah yang dapat diubah ukurannya untuk menggunakan
ResizePolicy, bukan dua pengubah (I7fb0f, b/496257436, b/519672992) - Menambahkan parameter tolerance:
Dp = Dp(0.5f)ke semua pernyataan kesetaraan posisi dan dimensi floating point publik diSubspaceAssertions.kt. Perilaku toleransi default (0.5.dp) didokumentasikan sepenuhnya. (I266cb, b/521491915) - Menambahkan overload yang dapat dipindahkan dengan parameter
movePolicydan menghentikan penggunaantransformingMovabledanmovable(Ic88c1, b/481781189) - Menambahkan varian non-interaktif baru dari item daftar standar dan item daftar tersegmentasi yang mengikuti spesifikasi Material Expressive. Versi non-ekspresif tidak digunakan lagi. (Ide4de, b/491994186)
- Untuk Subspace, parameter
allowUnboundedSubspacekini tidak digunakan lagi dan disembunyikan. Perilaku tidak terbatas kini harus dicapai dengan menggunakanSubspaceModifier.requiredSizeIn(maxWidth=Dp.Infinity,maxHeight=Dp.Infinity,maxDepth=Dp.Infinity) pada pengubah Subspace. ParameterallowUnboundedSubspacetelah dihapus dariFollowingSubspace. (Ia72ae, b/433624021) - Mengonversi
Session.createmenjadi fungsi penangguhan. (I5d27f) - Menambahkan
SubspaceModifier.spatializedAudioOutputyang memungkinkan spasialisasi pemutaran audio melaluiExoPlayeratau melaluiSoundEffectPlayer(I46697, b/489421980, b/497867019) - Memperbarui
ComponentActivity.requestHomeSpace()danrequestFullSpace()untuk menampilkanSpaceRequestResultuntuk verifikasi status. (If1672) - Memperbarui
AnchorEntitymenjadiAnchorSpace(Ifa95e, b/513619219) - Metode
fromResourcetidak dibatasi dariSpatialGltfModelSource(I1f5a1, b/503047416) - Anggota
SubspaceSemanticsMatcherbersifat publik: propertidescription, metode factory pendamping (expectValue,keyIsDefined,keyNotDefined), fungsi anggota (matches,matchesAny), dan operator (and,or,not). (I972a4, b/460427288) - Memperbarui
SubspaceModifier.semantics,SubspaceModifier.testTag,SubspaceSemanticsInfo,SubspaceSemanticsModifierNodeuntuk menggunakan jenis semantik spasial yang diseleksi. (I80dea, b/460427288) - Mengganti nama
positionmenjadialigndiSpatialAlignmentdan menghapus metode offset arah individual untuk mendukung APIalignterpadu. (I9bdb2, b/479805937) - Menghapus API Mode Ruang yang Tidak Digunakan Lagi dari
SpatialConfiguration. (I1ef5c, b/458712461) - Memperkenalkan
SubspaceSemanticsConfiguration. Ini adalah konfigurasi properti semantik untuk node Spasial. Class ini mengekspos metode kueri untuk semantik 3D dengan aman tanpa membocorkan kemampuan semantik 2D dasar ke konsumen eksternal. (Id025e, b/460427288) - Memperkenalkan
SubspaceSemanticsPropertyReceiver: wrapper khusus yang membatasi properti penampung tata letak 3D ke kolom yang valid (awalnyatestTagdancontentDescription). (I5cf5c, b/460427288)
Perbaikan Bug
- Memperbarui
hasContentDescriptionpengubah Semantik agar ditetapkan secara default ke pencocokan substring. (I08214) - Menambahkan
FollowBehavior.ExponentialDecay()terbatas yang memberikan perilaku mengikuti yang lembut yang dipandu oleh fisika elastis. (I7449c, b/485639909, b/500493335)
Sebagian besar API akan terpengaruh oleh hal ini. Secara khusus, LocalSession CompositionLocal dan semua CompositionLocals yang bergantung pada LocalSession (misalnya, LocalSpatialConfiguration, LocalSpatialCapabilities, dll.) kini akan di-resolve ke null atau versi non-XR-nya sebelum Session diinisialisasi.
Setelah Session tersedia, rekomposisi akan dipicu dengan status yang benar. (I0cfa4, b/514712835, b/514712835)
- Dokumentasi yang diperjelas untuk
ComponentActivity.requestHomeSpacedanComponentActivity.requestFullSpaceterkait perilaku penangguhan, pembatalan, dan konkurensi. Memperbarui pengujian untuk memverifikasi penerapanCancellationException. (I22f75, b/493289528)
Versi 1.0.0-alpha15
17 Juni 2026
androidx.xr.compose:compose:1.0.0-alpha15 dan androidx.xr.compose:compose-testing:1.0.0-alpha15 dirilis. Versi 1.0.0-alpha15 berisi commit ini.
Perubahan API
- Menghentikan penggunaan
ResizePolicydan pengubah lama yang dapat diubah ukurannya, menggantinya dengan overloadSubspaceModifier.resizablebaru danSubspaceModifier.transformingResizable. (I9e4bc) - Mengupdate API
SpatialGltfModel: Menambahkan dukungan untuk memuat model dari resource melaluiSpatialGltfModelSource.fromResource. Mengganti nama kecepatan menjadiplaybackSpeeddiSpatialGltfModelAnimationdan menambahkan metode resume().SpatialGltfModelStatus.Loaded dan Loading kini menjadi objek. (I523de) - Menandai
rotateToLookAtUsersebagai API eksperimental. (I86c16) - Memindahkan dan mengganti nama variabel yang dilindungi
targetCurrentPosemenjadi variabel lokalcurrentTargetPoseMeter. (Ia557c) - Mengupdate kdoc
SpatialPaneldanSpatialExternalSurfaceuntuk menyertakan tempat objek dirender dalam ukuran tata letaknya (I72104) - Mengenkapsulasi logika pemuatan
SpatialGltfModeldalamSpatialGltfModelStatedan memperjelas perilaku kegagalan. (Ibe98b) - Memperjelas
depthdi kdocsSubspaceModifer.size(I0f84f)
Versi 1.0.0-alpha14
19 Mei 2026
androidx.xr.compose:compose:1.0.0-alpha14 dan androidx.xr.compose:compose-testing:1.0.0-alpha14 dirilis. Versi 1.0.0-alpha14 berisi commit ini.
Perubahan API
- Memperkenalkan
transformingMovableuntuk gerakan 3D default yang ditangani sistem dan memperkenalkan overload baru untukmovableguna menangani perilaku gerakan kustom. (I50960) SpatialGltfModel.fromData()telah dihapus. (I4d083)- Menambahkan antarmuka node pengubah baru,
SubspaceMeasuredSizeAwareModifierNode, yang menyediakan callbackonRemeasuredsetelah penerusan pengukuran.SubspaceLayoutAwareModifierNodekini memperluas antarmuka baru ini. PengubahonSizeChangedtelah diupdate untuk menggunakanonRemeasured, sehingga memastikan callback dipicu tepat setelah pengukuran, bukan setelah penempatan. (Iafbae) - Mengubah
InteractionPolicymenjadiInterface(I0ff30) - Mengupdate Compose
compileSdkke API 37. Artinya, versi AGP minimum 9.2.0 diperlukan saat menggunakan Compose. (Id45cd) - Mengupdate kdocs
Size(Iefa9a)
Versi 1.0.0-alpha13
6 Mei 2026
androidx.xr.compose:compose:1.0.0-alpha13 dan androidx.xr.compose:compose-testing:1.0.0-alpha13 dirilis. Versi 1.0.0-alpha13 berisi commit ini.
Perubahan API
- Orbiter API masih menunggu perubahan tambahan. Sebaiknya Anda mengabaikan pemberitahuan penghentian penggunaan untuk Orbiter dan terus memantau perubahan Orbiter dalam rilis mendatang.
- Pengguna yang menggunakan
SceneCoreEntityuntuk merender glTF harus memastikan bahwa mereka meneruskansession.scene.activitySpaceke parameterparentdari panggilanGltfModel.createmereka untuk memastikan glTF mereka akan dirender. - Menambahkan
SpatialGltfModelAPI untuk memungkinkan developer menambahkan Gltf ke aplikasi Compose untuk XR mereka. Developer juga dapat mengkueri animasi dan node di dalam model Gltf mereka. (I8b542, b/495422586) - Mengubah
SceneCoreEntitySizeAdapterdari class menjadi antarmuka (I5a784, b/475292310) - Mengganti nama
SurfaceProtectionmenjadiSpatialExternalSurfaceProtection. Memperbarui kdocSpatialExternalSurface(Ifad0a, b/485231082) - Menghentikan penggunaan
currentWindowAdaptiveInfodan memperkenalkan V2-nya (I40ecf, b/424442112) - Pengubah
resizablekini bersifat publik dan berlaku untuk grup (misalnya,SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787) - Pengubah
movablekini bersifat publik. Pengubah ini berfungsi dengan baik, saat ini, untukSpatialPanelsdanSpatialExternalSurface; namun, tujuannya adalah agar pengubah ini didukung dengan baik untuk semuaSubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063) SpatialEnterTransitiondanSpatialExitTransitionditandai sebagai@Immutable(If1710, b/487757837)SpatialGltfModelAPI ditandai sebagai dibatasi untuk rilis ini sambil menunggu pengujian tambahan. (Ibf003, b/466090694)- Mengganti nama
DeviceTrackingMode.LAST_KNOWNmenjadiSPATIAL_LAST_KNOWN(dengan fallback yang tidak digunakan lagi), menambahkanINERTIAL_LAST_KNOWNuntuk pelacakan 3DoF, dan menambahkanTRACKING_DEGRADEDkeTrackingState. (Ie661c, b/445466590) - Menghapus
SpatialLayoutSpaceryang tidak digunakan lagi (I7b36c) - Menghapus API padding yang tidak digunakan lagi (If1886)
- Menambahkan
floatRangeke nilai bias. Menghapus nilai default untukLayoutDirection(I9d74e)
Perbaikan Bug
- Menambahkan contoh kode dan dokumentasi KDoc untuk
SpatialColumn,SpatialRow, danSpatialCurvedRow. (Iaf54f, b/495777633)
Versi 1.0.0-alpha12
25 Maret 2025
androidx.xr.compose:compose:1.0.0-alpha12 dan androidx.xr.compose:compose-testing:1.0.0-alpha12 dirilis. Versi 1.0.0-alpha12 berisi commit ini.
Perubahan API
- Tambahkan
SpatialGltfModelAPI danSpatialGltfModelAnimationAPI untuk merender glTF dan mengontrol animasi. MengubahSpatialGltfModelStatemenjadiAutoCloseable, sekarang perlu ditutup untuk mengosongkan resource-nya. (I11fde, b/466065486, b/481379924). Namun,SpatialGltfModelAPI ditandai sebagai dibatasi untuk rilis ini sambil menunggu pengujian tambahan. (Ibf003, b/466090694) - Menambahkan overload kosong yang tidak digunakan lagi untuk
SubspaceModifier.rotate. (Idceb6) - Mengganti nama fungsi
SpatialSmoothFeatheringEffectmenjadispatialSmoothFeatheringEffectdan memindahkannya ke modul draw. Memperbarui nilai feathering defaultSpatialExternalSurfaceke null, yang meniru fungsi ZeroFeatheringEffect lama. (I5fdaa, b/460426800) onPointSourceParamsAvailabledihapus. API spasialisasi audio yang berbeda akan tersedia dalam waktu dekat. (I86507, b/458513439)- Menambahkan perilaku RTL untuk pengubah subruang offset. Juga menambahkan
absoluteOffsetuntuk mengabaikan arah tata letak. (I30e4b, b/474409165)
Versi 1.0.0-alpha11
25 Februari 2026
androidx.xr.compose:compose:1.0.0-alpha11 dan androidx.xr.compose:compose-testing:1.0.0-alpha11 dirilis. Versi 1.0.0-alpha11 berisi commit ini.
Fitur Baru
- Menambahkan parameter
SuperSamplingkeSpatialExternalSurfaces(Icd4d1)
Masalah Umum
- Masalah pada
SurfaceEntitydi SceneCore dapat menyebabkan aplikasi error saat membuat instanceSpatialExternalSurface. Masalah ini telah diselesaikan diandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13,androidx.xr.compose:compose:1.0.0-alpha12, dan rilis berikutnya. Aplikasi yang terpengaruh harus diupdate ke versi terbaru.
Perubahan API
- Perubahan padding pengubah subruang untuk pengenalan arah tata letak. (I53e25)
SpatialCapabilitieskini disegel dan tidak dapat diperpanjang. (I07aef)SpatialRowdanSpatialColumnAPI yang menerima parameterSpatialAlignmentgenerik tidak digunakan lagi; sebagai gantinya, gunakan API yang menerimaverticalAlignmentatauhorizontalAlignmentuntukSpatialRowdanSpatialColumn. (Iec390)- Menggabungkan API fungsi
SubspaceLayoutyang kelebihan beban (Idd30a) - Mengganti nama
SubspaceModifier.lookAtUsermenjadirotateToLookAtUserdan parameterupmenjadiupDirection. (Icafb8) - Membuat
SpatialRowmenjadi fungsi inline (Ia2f20) - Membuat
SpatialColumnmenjadi fungsi inline (I681be) - Menghapus API billboard (Ib76cd)
Versi 1.0.0-alpha10
28 Januari 2026
androidx.xr.compose:compose:1.0.0-alpha10 dan androidx.xr.compose:compose-testing:1.0.0-alpha10 dirilis. Versi 1.0.0-alpha10 berisi commit ini.
Perubahan API
- Menghapus API yang tidak digunakan lagi -
ApplicationSubspace(Ia6596, b/468345186) - Mengubah
SpatialShapemenjadi antarmuka tertutup (I7e3f5, b/460426800) - Menghapus API yang Tidak Digunakan Lagi di
SpatialAlignment. (Ib0b61, b/468011887) - Menghentikan penggunaan
SpatialLayoutSpacerdan memperkenalkanSpatialSpacer. (I2ebf3, b/466071383) - Mengupdate
UserSubspaceAPI untuk mengganti terminologi "lazy locking" dengan "soft locking". (I9ded1, b/464035984)
Versi 1.0.0-alpha09
03 Desember 2025
androidx.xr.compose:compose:1.0.0-alpha09 dan androidx.xr.compose:compose-testing:1.0.0-alpha09 dirilis. Versi 1.0.0-alpha09 berisi commit ini.
Perubahan API
- Menambahkan pengubah
LookAtUserdan Billboard yang memungkinkan konten selalu menghadap pengguna. (I49b99) - Menambahkan kemampuan untuk menyetel
InteractionPolicykeSpatialExternalSurfacesdanSpatialPanels, sehingga memungkinkan deteksi klik dan peristiwa input 3D lainnya. (Iae155) - Menambahkan overload pengubah ukuran dan
requiredSizedengan lebar, tinggi, dan kedalaman sebagai nilai Dp. (I92f79) - Antarmuka
ParentLayoutParamsModifierkini memperluasDelegatableSubspaceNode. (I1a6d4) ApplicationSubspacetidak digunakan lagi dan digantikan dengan Subspace API.- Perilaku Subspace API diubah untuk hanya menyediakan subruang di seluruh aplikasi pada pose dan skala yang direkomendasikan.
PlanarEmbeddedSubspaceAPI diperkenalkan untuk menyediakan subruang tersemat dalam konteks 2D. (Id3343)
- Menambahkan flag
shouldAutoInvalidatekeSubspaceModifier.NodeAPI. (I93902) - Menambahkan
required(Size|Width|Depth|Height)In API yang memungkinkan developer membatasi ukuran@SubspaceComposableke rentang tertentu, dengan mengabaikan batasan pengukuran induk yang masuk. (Ifaa78) - Menambahkan
SubspaceModifier.onSizeChangedyang menyediakan callback sederhana dan terfokus bagi developer untuk bereaksi saat ukuran@SubspaceComposableberubah. (I994f9) - Menghapus Volume API.
SceneCoreEntityAPI harus digunakan, bukan Volume API. (I4162b) - Membagi
SubspaceLayoutModifierNode.requestRelayoutmenjadiinvalidateMeasurement/invalidatePlacement. (I14805) - Menambahkan
SpatialGltfModelAPI yang memungkinkan developer merender glTF di compose. (Icc91f) - Memperkenalkan API composable
SpatialGltfModeluntuk merender glTF dengan mudah (Iade67)
Perbaikan Bug
- Memperbaiki bug tata letak di
SceneCoreEntity. Sekarang, elemen ini akan mematuhi batasannya dengan benar. (I11bb8) - Menurunkan modul jxr-compose ke
Compile sdk = 34(I2d5db)
Versi 1.0.0-alpha08
22 Oktober 2025
androidx.xr.compose:compose:1.0.0-alpha08 dan androidx.xr.compose:compose-testing:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit ini.
Perubahan API
- Mengubah
ResizePolicyuntuk menerimaonResizeStart,onResizeUpdate, danonResizeEnd. (I7e21f)
Perbaikan Bug
- Mencegah error saat menghancurkan Aktivitas dengan Subspace. (I595a1)
Versi 1.0.0-alpha07
24 September 2025
androidx.xr.compose:compose:1.0.0-alpha07 dan androidx.xr.compose:compose-testing:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.
Perubahan API
- KDocs yang ditingkatkan untuk
SpatialMainPanel. (I27b70, b/444467891) - Memperkenalkan
SpatialArrangementuntuk mengatur turunan di sepanjang sumbu utama dalam tata letak 3D sepertiSpatialRowdanSpatialColumn. API baru ini menyediakan opsi pengaturan yang sudah dikenal dari Compose 2D, termasukStart,End,Center,SpaceBetween,SpaceAround, danSpaceEvenly, dengan dukungan penuh untuk arah tata letak LTR dan RTL. (I7db38, b/436289959) - Menambahkan antarmuka dasar untuk
SubspaceModifier.Nodeguna meningkatkan keamanan jenis dan kegunaan antarmuka ekstensi; sepertiCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(internal) (Iede00, b/440599394, b/440599394)
SpatialExternalSurface(I33315, b/439646773)- Memperkenalkan
SubspaceModifierke composable Subspace dan mengganti parameter batasan denganSubspaceModifierdenganSubspaceModifiersterkait ukuran. JikaallowUnboundedSubspacebernilai benar (true), Subruang masih dapat memiliki batasan yang tidak terbatas. (Ib06e6, b/433331675) - Menghentikan penggunaan
SubspaceModifiersyang dapat dipindahkan dan diubah ukurannya karenaDragPolicy()danResizePolicy()kini menjadi bagian dari APISpatialPaneldanSpatialExternalSurface(I397bf, b/437924639) - Menambahkan dukungan untuk
LayoutDirectiondalam tata letak spasial. Composable yang menggunakanSpatialAlignmentkini akan memosisikan elemen dengan benar dalam konteks LTR dan RTL. (I964bb, b/436300273) - Tambahkan parameter Resizable dan Movable ke API
Paneluntuk memastikan bahwa perilaku ini hanya dapat diterapkan ke penampung yang didukung. (Id491c) - Menambahkan
sizeIn,widthIn,heightIn,depthInSubspaceModifiersyang memungkinkan Anda menetapkan batasan minimum dan maksimum yang tepat untuk lebar, tinggi, dan kedalaman. (I1af09, b/433330761)
Versi 1.0.0-alpha06
13 Agustus 2025
androidx.xr.compose:compose:1.0.0-alpha06 dan androidx.xr.compose:compose-testing:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit ini.
Perbaikan Bug
- Buat ulang
ComposeXrOwnerLocalssaat pemilik siklus proses dihancurkan. (9123ce1)
Versi 1.0.0-alpha05
30 Juli 2025
androidx.xr.compose:compose:1.0.0-alpha05 dan androidx.xr.compose:compose-testing:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Fitur Baru
- Perubahan class anotasi
SubspaceComposablemenjadi publik. (Ic2a34, b/399432430) - Dua Composable
SpatialExternalSurfacebaru yang mewakili bola 180 dan 360 derajat. (I40ef2, b/391705799) - Menambahkan
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147) - Menambahkan API
SceneCoreEntityuntuk meningkatkan interoperabilitas antaraSceneCoredan Compose untuk XR. (I50bb3, b/423020989) - Menyediakan
GravityAlignedsubspaceAPI untuk mendukung fiturGravityAlignedyang tidak diskalakan (I07359)
Perubahan API
SpatialDialog()akan mengikuti konfigurasi penekananSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)- Perbarui
minimumPanelDimensionke ukuran Dimensi default baru sebesarDimensions(0.1f, 0.1f, 0.1f)karena representasinya dalam Meter. (Ib852a) - Subspace dan Orbiter kini akan mempertahankan status internalnya di ruang beranda dan saat aplikasi berada di latar belakang. Dalam mode ruang utama, Subspace akan tetap menyiapkan adegannya sebagai persiapan untuk beralih ke mode ruang penuh. (I40317, b/416037751)
SpatialDialogskini akan mempertahankan statusnya saat aplikasi berada di latar belakang. (I6aa56)ApplicationSubspacekini akan mewarisi skala dan posisi yang direkomendasikan dari sistem. (I4565f, b/418834194)- Menambahkan pesan error yang lebih baik dan memicu error lebih awal saat
SubspaceComposabledigunakan dalam konteks non-SubspaceComposable. (Iee2ae, b/416484684) - Memperbarui
ExperimentalSubspaceVolumeApidari Peringatan ke Error karena peringatan sering diabaikan saat menyalahgunakan API composable. (I427aa, b/424864286) - Subspace dan
ApplicationSubspacekini dibatasi olehrecommendedContentBoxInFullSpace. Sebelumnya, fitur ini dibatasi oleh Ruang PandangSpatialUser. (I41015, b/423074142) - Memperbarui
SpatialElevationagar menggunakan ukuran minimum dan tidak lagi menggunakan ukuran hard code (I2dbe6, b/427785338) - Perbarui cara kita menerapkan scrim pada
SpatialAcitivityPaneluntuk memperbarui saat variabel kunci diubah. (I0f64d, b/427999029) - Hapus
VolumeConstraints.Unboundeddan tetapkan nilai batasan default ke nilai yang setara. (Ie24ec, b/407938414) SpatialFeatheringSizetidak lagi bersifat publik (I1c15b, b/399432430)- Mengganti nama
PlaceableXR menjadiSubspacePlaceableuntuk membedakannya dariPlaceableCompose. (I74874) - Menghapus setelan Orbiter dan menambahkan
shouldRenderInNonSpatialsebagai parameter baru. Selain itu, hapus classEdgeOffsetdan tambahkanorbiterOffsetTypesebagai parameter baru untuk menggabungkan FungsiOrbiter(). Serta mengganti namaOrbiterEdgemenjadiContentEdge. (Iebf3d) - Mengganti nama
MeasurablemenjadiSubspaceMeasurableuntuk membedakan jenisnya dari jenisMeasurableCompose. (I9726c) - Mengganti nama
MeasureResultmenjadiSubspaceMeasureResult(I9f34d) - Menghapus
setSubspaceContentAPI dan menggantinya dengansetContentCompose dengan composableSubspace. (Ifff4c, b/421427391, b/421427391) MeasurePolicydiganti namanya menjadiSubspaceMeasurePolicy. (I37a9b, b/422553904)- Ubah
SubspaceSemanticsInfomenjadi antarmuka tersegel karena kita tidak akan dapat menambahkan anggota tanpa default. (I372f9, b/423704068) - Memperbarui dokumentasi
SpatialExternalSurface, mengganti namaContentSecurityLevelmenjadiSurfaceProtection(I3c460, b/420982808) - Menyediakan konstruktor kelebihan muatan untuk pengubah yang dapat dipindahkan yang memungkinkan penautan. (Ic0c70)
- Menambahkan lebih banyak penyedia posisi untuk tooltip sehingga kini developer dapat mengontrol apakah tooltip ditempatkan di atas, di bawah, di kiri, atau di kanan anchor. Menambahkan API yang menggunakan Shape untuk tanda sisipan, sehingga lebih banyak bentuk kustom dapat disediakan. (Ie513c, b/374766087, b/418854637)
CoreEntitydihapus sebagaiPublishedApi(Ifee05)
Perbaikan Bug
- Memperbaiki masalah saat
SpatialDialogberkedip saat dirender. (Ife73c, b/401619909) - Memperbaiki masalah saat
SpatialDialogtidak dapat men-scrim Panel Aktivitas. (I8ca6c, b/367442109) - Memperbaiki dialog XR yang tidak menampilkan beberapa konten (I17cd5, b/418062437)
- Memperbaiki masalah saat
SpatialPopupditutup saat diklik di dalam konten. (If262c, b/417245722) - Memperbaiki masalah saat SpatialPanel gagal diubah ukurannya dengan benar ke ukuran baru saat merantai
resizable().movable(). (I02ee3, b/422264230) - Memperbaiki
topBaryang tumpang-tindih dengan menu diSpatialComposeVideoPlayer(Id33bc, b/427168167) - Memperbaiki radius sudut yang tidak dirender (I975fe, b/428261830)
Versi 1.0.0-alpha04
7 Mei 2025
androidx.xr.compose:compose:1.0.0-alpha04 dan androidx.xr.compose:compose-testing:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.
Fitur Baru
- Menambahkan antarmuka
CompositionLocalConsumerSubspaceModifierNodeuntuk memungkinkan jenisSubspaceModifierkustom mengakses nilai lokal komposisi. - Menambahkan
SpatialPanelAPI baru yang mengikuti gaya implementasiAndroidViewcompose dan menghentikan penggunaanViewBased SpatialPanelsebelumnya. - Menambahkan objek pendamping
VolumeConstraints.Unboundedyang mewakili batasan tidak terbatas. - Menambahkan
SubspaceModifier.onPointSourceParamsuntuk mengizinkan sumber audio spasial. ApplicationSubspacepublik telah ditambahkan, yang menawarkanVolumeConstraintsopsional untuk menentukan area 3D tempat aplikasi dapat merender konten spasial. Secara default, jika tidak ada batasan yang ditentukan, Subspace akan dibatasi oleh ruang pandangSpatialUsersaat ini dalam lebar dan tinggi. Pengguna dapat memberikan batasan yang akan digunakan jika ruang pandang tidak dapat ditentukan. Jika tidak, nilai lebar dan tinggi ruang pandang default akan digunakan.- Menambahkan
SpatialExternalSurface, yang dapat digunakan untuk merender konten stereoskopis.SpatialExternalSurfacedapat disesuaikan dengan pengubah (kecuali alfa), dan efek pengaburan tepi. - Menambahkan Pengubah Subruang
pointerHoverIconbaru yang memungkinkan pengguna menetapkan ikon untuk pointer spasial.
Perubahan API
- Menghapus batasan
RequiresApi(34)di semua paket Jetpack XR. Pembatasan ini berlebihan karena Jetpack XR saat ini hanya tersedia di perangkat dengan level API 34+. (Iae0f8) - Project yang dirilis dengan Kotlin 2.0 memerlukan KGP 2.0.0 atau yang lebih baru untuk digunakan. (Idb6b5)
- Penanganan tombol kembali kini akan berfungsi di panel spasial tanpa aktivitas tersemat. Agar penanganan tombol kembali berfungsi, Anda harus menentukan
android:enableOnBackInvokedCallback="true"dalam manifes Android. - Penanganan tombol kembali kini akan berfungsi pada dialog spasial. Agar penanganan tombol kembali berfungsi, Anda harus menentukan
android:enableOnBackInvokedCallback="true"dalam manifes Android. SpatialPanelberbasis Compose dan berbasis View kini dapat menyesuaikan ukurannya berdasarkan kontennya.- Developer kini dapat menetapkan nilai
SpatialElevationLevelkustom mereka sendiri dan tidak dibatasi pada level yang telah ditentukan sebelumnya. - Tingkat elevasi Orbiter kini dapat disesuaikan melalui parameter
elevation. - Subruang kini dapat dibatasi oleh ruang pandang
SpatialUserdalam lebar dan tinggi secara default. Jika ruang pandang tidak dapat ditentukan, nilai lebar dan tinggi ruang pandang default akan digunakan. - Menambahkan callback baru
onMoveStartdanonMoveEndke pengubahMovable. CallbackonMoveStartdanonMoveEnddipanggil saat pengguna memulai dan mengakhiri pemindahan composable subruang dengan pengubah yang dapat dipindahkan. - Parameter
nametelah dihapus dari API spasial sepertiSpatialRowdanSpatialPanel. Untuk men-debug hierarki compose spasial, gunakanSubspaceModifier.testTag. - Menghapus overload
SpatialPopupyang tidak didukung yang hanya memilikispatialElevationLeveldancontent. Gunakan antarmuka yang mendukungonDimissRequest. - Callback
onPoseChangedari pengubah Movable telah dihapus. Sebagai gantinya, gunakanonMove. SubspaceModifierstidak akan lagi menerapkan efeknya jika dilepas atau sedang dilepas.SpatialRowAPI yang ada telah dibagi menjadiSpatialRowdanSpatialCurvedRow. Jika sebelumnya menggunakan parametercurveRadiusSpatialRow, gunakanSpatialCurvedRowsekarang yang menawarkan perilaku yang sama.MainPaneldanActivityPaneltidak lagi memiliki panel judul saat dijalankan pada image sistem terbaru yang serupa.- Pengubah alfa dan skala kini dapat ditumpuk dan akan mengalikan nilainya untuk nilai alfa atau skala akhir yang diterapkan.
- Callback
onPoseChangedari pengubah Movable telah dioptimalkan untuk melakukan gerakan pose yang lebih lancar. - Pengubah yang dapat dipindahkan dan diubah ukurannya kini akan menjalankan callback-nya di thread utama untuk memastikan bahwa perubahan status akan memicu rekomposisi.
- Menambahkan pengamatan status ke fase tata letak dan pengukuran untuk memastikan bahwa perubahan status di
SubspaceLayoutakan memicu tata letak ulang. - Mengoptimalkan update rantai pengubah untuk menggunakan kembali pengubah yang ada dengan lebih baik.
Perbaikan Bug
- Berhenti menampilkan scrim saat
SpatialDialogditampilkan. (Ic4594) - Permintaan tata letak ulang yang dibuat saat node pengubah dilepas kini akan diabaikan.
- Menghapus fase tata letak ulang yang dipicu oleh pengubah Movable dan Resizable.
- Memperbaiki error dalam composable
MainPanel()yang terjadi saat salah satu dimensi ditetapkan ke nol, baik secara langsung maupun selama penghitungan tata letak, misalnya, penghitunganSpatialRow/SpatialColumn. Panel kini akan disembunyikan. Perhatikan bahwa perbaikan ini secara khusus mengatasi error selama fase tata letak; pengubahan ukuran panel menjadi nol melalui interaksi pengguna akan ditangani secara terpisah. Panel tersembunyi tidak memiliki affordance UI. - Memperbaiki masalah terkait
maintainAspectRatiodari pengubah yang dapat diubah ukurannya. Rasio aspek sekarang akan dipertahankan. - Memperbaiki masalah terkait Subruang bertingkat yang posisinya salah untuk satu frame.
- Memperbaiki masalah saat sudut membulat terkadang tidak diterapkan sebagaimana mestinya.
NestedSubspacestidak akan lagi muncul selama satu frame di lokasi yang salah.
Versi 1.0.0-alpha03
26 Februari 2025
androidx.xr.compose:compose:1.0.0-alpha03 dan androidx.xr.compose:compose-testing:1.0.0-alpha03 dirilis tanpa perubahan penting sejak versi alfa terakhir. Versi 1.0.0-alpha03 berisi commit ini
Versi 1.0.0-alpha02
12 Februari 2025
androidx.xr.compose:compose:1.0.0-alpha02 dan androidx.xr.compose:compose-testing:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Fitur Baru
- Panel Aktivitas kini dapat menyaring kontennya saat Dialog Spasial diaktifkan.
OrbiterAPI kini dapat digunakan dalam konteksSubspaceComposabledan akan melampirkan Orbiter ke induk composable berbasisSubspaceLayoutterdekat.- Memperkenalkan
LayoutCoordinatesAwareModifierNodeuntuk memungkinkan pengubah berbasis pemosisian kustom. - Menambahkan metode siklus proses lampirkan/lepaskan ke
SubspaceModifier.Node. - Menambahkan
scaleWithDistanceke pengubah yang dapat dipindahkan. JikascaleWithDistancediaktifkan, elemen subruang yang dipindahkan akan bertambah atau berkurang. Skala eksplisit yang dimiliki sebelum pemindahan juga akan dipertahankan.
Perubahan API
- Menghapus
SessionCallbackProviderdan menggantinya denganSpatialCapabilities.
Perubahan lain
minSDKdikurangi menjadi 24. Semua Jetpack XR API terus memerlukan API 34 saat runtime.- Konstruktor
OrbiterEdgeOffset.inner,EdgeOffset.outer, danEdgeOffset.overlaptidak lagi menjadi metode@Composable, sehingga dapat digunakan dalam konteks non-composable. - Memperbarui Tingkat Elevasi Spasial agar sesuai dengan spesifikasi UX terbaru.
- Terapkan antarmuka
SubspaceSemanticsInfoke dalamMeasurableLayout. - Mengganti nama
SubspaceModifierElementmenjadiSubspaceModifierNodeElement.
Perbaikan bug
- Perbaikan untuk menstabilkan pengurutan
SubspaceModifier.SubspaceModifierakan berperilaku lebih andal. Pengubah offset, rotasi, skala, dapat dipindahkan, dan dapat diubah ukurannya kini dapat digunakan dalam urutan apa pun.
Versi 1.0.0-alpha01
12 Desember 2024
androidx.xr.compose:compose-*1.0.0-alpha01 dirilis.
Fitur Rilis Awal
Rilis developer awal Jetpack Compose untuk XR. Gunakan konsep Compose yang sudah dikenal seperti baris dan kolom untuk membuat tata letak UI spasial di XR, baik Anda mem-porting aplikasi 2D yang ada ke XR maupun membuat aplikasi XR baru dari awal. Library ini menyediakan composable spasial dan subruang: seperti panel spasial dan pengorbit, yang memungkinkan Anda menempatkan UI berbasis View atau Compose 2D yang ada dalam tata letak spasial. API ini memperkenalkan composable sub-ruang Volume, yang memungkinkan Anda menempatkan entity SceneCore, seperti model 3D, secara relatif terhadap UI Anda. Pelajari lebih lanjut dalam panduan developer ini:
Subspace: Composable ini dapat ditempatkan di mana saja dalam hierarki UI aplikasi, sehingga Anda dapat mempertahankan tata letak untuk UI 2D dan spasial tanpa kehilangan konteks antarfile. Hal ini memudahkan berbagi hal-hal seperti arsitektur aplikasi yang ada antara XR dan faktor bentuk lainnya tanpa perlu mengangkat status melalui seluruh hierarki UI atau merancang ulang aplikasi Anda.SpatialPanel: Panel spasial adalah composable subruang yang memungkinkan Anda menampilkan konten aplikasi–misalnya, Anda dapat menampilkan pemutaran video, gambar diam, atau konten lainnya di panel spasial.
Orbiter: Orbiter adalah komponen UI spasial. Orbiter dirancang untuk dipasang ke panel spasial yang sesuai, dan berisi item tindakan kontekstual dan navigasi yang terkait dengan panel spasial tersebut. Misalnya, jika Anda telah membuat panel spasial untuk menampilkan konten video, Anda dapat menambahkan kontrol pemutaran video di dalam orbiter.
Volume: Tempatkan entity SceneCore, seperti model 3D, yang relatif terhadap UI Anda.
Tata Letak Spasial: Anda dapat membuat beberapa panel spasial dan menempatkannya dalam Tata Letak Spasial menggunakan
SpatialRow,SpatialColumn,SpatialBox, danSpatialLayoutSpacer. GunakanSubspaceModifieruntuk menyesuaikan tata letak Anda.Komponen UI spasial: Elemen ini dapat digunakan kembali di UI 2D Anda, dan atribut spasialnya hanya akan terlihat saat kemampuan spasial diaktifkan.
SpatialDialog: Panel akan sedikit terdorong ke belakang dalam kedalaman z untuk menampilkan dialog yang ditinggikan.SpatialPopUp: Panel akan sedikit terdorong ke belakang dalam kedalaman z untuk menampilkan pop-up yang ditinggikanSpatialElevation:SpatialElevationLeveldapat ditetapkan untuk menambahkan elevasi.
SpatialCapabilities: Kemampuan spasial dapat berubah saat pengguna berinteraksi dengan aplikasi atau sistem Anda, atau bahkan dapat diubah oleh aplikasi Anda sendiri—misalnya, berpindah ke Ruang Utama atau Ruang Penuh. Untuk menghindari masalah, aplikasi Anda perlu memeriksa
LocalSpatialCapabilities.currentuntuk menentukan API mana yang didukung di lingkungan saat ini.isSpatialUiEnabled: Elemen UI spasial (misalnya, SpatialPanel)isContent3dEnabled: Objek 3DisAppEnvironmentEnabled: LingkunganisPassthroughControlEnabled: Apakah aplikasi dapat mengontrol status passthrough atau tidakisSpatialAudioEnabled: Audio spasial
Masalah Umum
- Saat ini, minSDK 30 diperlukan untuk menggunakan Jetpack Compose untuk XR. Sebagai solusinya, Anda dapat menambahkan entri manifes
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>berikut agar dapat mem-build dan menjalankan dengan minSDK 23. - Aplikasi Jetpack XR saat ini memerlukan permintaan izin
android.permission.SCENE_UNDERSTANDINGdi AndroidManifest. - Saat aplikasi diluncurkan langsung ke Ruang Penuh menggunakan properti
PROPERTY_XR_ACTIVITY_START_MODEdalam manifesnya, Aktivitas/Aplikasi awalnya dibuka di Ruang Utama sebelum beralih ke Ruang Penuh. - glTF di Composable Volume mungkin awalnya berkedip di lokasi yang salah.
- Menggunakan SpatialDialog di panel yang telah dipindahkan secara signifikan akan mendorong konten ke arah yang salah.