Jetpack Compose สำหรับ XR
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 17 มิถุนายน 2026 | - | - | - | 1.0.0-alpha15 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน XR Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
ดึงดูด
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha15" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha15" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha15") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha15") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยให้ Jetpack ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของ Issue Tracker
รุ่น 1.0
เวอร์ชัน 1.0.0-alpha15
17 มิถุนายน 2026
androidx.xr.compose:compose:1.0.0-alpha15 และ androidx.xr.compose:compose-testing:1.0.0-alpha15 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha15 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เลิกใช้งาน
ResizePolicyและตัวแก้ไขที่ปรับขนาดได้แบบเก่า แล้วแทนที่ด้วยการโอเวอร์โหลดSubspaceModifier.resizableและSubspaceModifier.transformingResizableใหม่ (I9e4bc) - อัปเดต API
SpatialGltfModel: เพิ่มการรองรับการโหลดโมเดลจากทรัพยากรผ่านSpatialGltfModelSourcefromResourceเปลี่ยนชื่อความเร็วเป็นplaybackSpeedในSpatialGltfModelAnimationและเพิ่มเมธอด resume()SpatialGltfModelStatusตอนนี้ Loaded และ Loading เป็นออบเจ็กต์แล้ว (I523de) - ทำเครื่องหมาย
rotateToLookAtUserเป็น API เวอร์ชันทดลอง (I86c16) - ย้ายและเปลี่ยนชื่อตัวแปรที่ป้องกัน
targetCurrentPoseเป็นตัวแปรในเครื่องcurrentTargetPoseMeter(Ia557c) - อัปเดต
SpatialPanelและSpatialExternalSurfacekdocs เพื่อระบุตำแหน่งที่แสดงผลออบเจ็กต์ภายในขนาดเลย์เอาต์ (I72104) SpatialGltfModelตรรกะการโหลดที่แคปซูลภายในSpatialGltfModelStateและชี้แจงลักษณะการทำงานเมื่อเกิดข้อผิดพลาด (Ibe98b)- ชี้แจง
depthในเอกสารความรู้ของSubspaceModifer.size(I0f84f)
เวอร์ชัน 1.0.0-alpha14
19 พฤษภาคม 2026
androidx.xr.compose:compose:1.0.0-alpha14 และ androidx.xr.compose:compose-testing:1.0.0-alpha14 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha14 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
transformingMovableสำหรับการเคลื่อนไหว 3 มิติที่ระบบจัดการโดยค่าเริ่มต้น และเปิดตัวการโอเวอร์โหลดใหม่สำหรับmovableเพื่อจัดการลักษณะการเคลื่อนไหวที่กำหนดเอง (I50960) - นำ
SpatialGltfModel.fromData()ออกแล้ว (I4d083) - เพิ่มอินเทอร์เฟซโหนดตัวแก้ไขใหม่
SubspaceMeasuredSizeAwareModifierNodeซึ่งให้การเรียกกลับonRemeasuredหลังจากผ่านการวัดSubspaceLayoutAwareModifierNodeขยายอินเทอร์เฟซใหม่นี้แล้ว เราได้อัปเดตตัวแก้ไขonSizeChangedให้ใช้onRemeasuredเพื่อให้มั่นใจว่าระบบจะทริกเกอร์การเรียกกลับทันทีหลังจากการวัดผล ไม่ใช่หลังจากการวาง (Iafbae) - อัปเดต
InteractionPolicyเป็นInterface(I0ff30) - อัปเดต Compose
compileSdkเป็น API 37 ซึ่งหมายความว่าเมื่อใช้ Compose จะต้องใช้ AGP เวอร์ชัน 9.2.0 เป็นอย่างน้อย (Id45cd) - อัปเดตเอกสาร
Size(Iefa9a)
เวอร์ชัน 1.0.0-alpha13
6 พฤษภาคม 2026
androidx.xr.compose:compose:1.0.0-alpha13 และ androidx.xr.compose:compose-testing:1.0.0-alpha13 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha13 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- Orbiter API อยู่ระหว่างการเปลี่ยนแปลงเพิ่มเติม เราขอแนะนำให้ระงับประกาศการเลิกใช้งานสำหรับ Orbiter และคอยติดตามการเปลี่ยนแปลงของ Orbiter ในรุ่นที่จะเปิดตัวในอนาคต
- ผู้ที่ใช้
SceneCoreEntityในการแสดงผล glTF ควรตรวจสอบว่าได้ส่งsession.scene.activitySpaceไปยังพารามิเตอร์parentของการเรียกGltfModel.createเพื่อให้แน่ใจว่า glTF จะแสดงผล - เพิ่ม
SpatialGltfModelAPI เพื่ออนุญาตให้นักพัฒนาแอปเพิ่ม Gltf ลงในแอป Compose For XR นอกจากนี้ นักพัฒนายังสามารถค้นหาภาพเคลื่อนไหวและโหนดภายในโมเดล Gltf ได้ด้วย (I8b542, b/495422586) - เปลี่ยน
SceneCoreEntitySizeAdapterจากคลาสเป็นอินเทอร์เฟซ (I5a784, b/475292310) - เปลี่ยนชื่อ
SurfaceProtectionเป็นSpatialExternalSurfaceProtectionแล้ว อัปเดตเอกสาร KDocSpatialExternalSurface(Ifad0a, b/485231082) - เลิกใช้งาน
currentWindowAdaptiveInfoและเปิดตัว V2 (I40ecf, b/424442112) - ตอนนี้ตัวแก้ไข
resizableพร้อมใช้งานแล้วและใช้ได้กับกลุ่ม (เช่นSpatialRow) (I2bcf6, b/348483527, b/489753178, b/479530787) - ตอนนี้แป้นกดร่วม
movableพร้อมใช้งานแบบสาธารณะแล้ว ขณะนี้ตัวแก้ไขนี้ใช้ได้ดีกับSpatialPanelsและSpatialExternalSurfaceแต่เราตั้งใจที่จะให้ตัวแก้ไขเหล่านี้รองรับSubspaceComposablesทั้งหมดได้ดี (I9a3cd, b/479530787, b/478935063, b/478935063) SpatialEnterTransitionและSpatialExitTransitionมีสถานะเป็น@Immutable(If1710, b/487757837)- เราได้ทำเครื่องหมายว่า
SpatialGltfModelAPI ถูกจำกัดสำหรับการเปิดตัวนี้ระหว่างรอการทดสอบเพิ่มเติม (Ibf003, b/466090694) - เปลี่ยนชื่อ
DeviceTrackingMode.LAST_KNOWNเป็นSPATIAL_LAST_KNOWN(พร้อมการสำรองข้อมูลที่เลิกใช้งานแล้ว) เพิ่มINERTIAL_LAST_KNOWNสำหรับการติดตาม 3DoF และเพิ่มTRACKING_DEGRADEDลงในTrackingState(Ie661c, b/445466590) - นำ
SpatialLayoutSpacerที่เลิกใช้งานแล้วออก (I7b36c) - การนำ API การเพิ่มระยะขอบที่เลิกใช้งานแล้วออก (If1886)
- เพิ่ม
floatRangeลงในค่าอคติ นำค่าเริ่มต้นสำหรับLayoutDirectionออกแล้ว (I9d74e)
การแก้ไขข้อบกพร่อง
- เพิ่มตัวอย่างโค้ดและเอกสารประกอบ KDoc สำหรับ
SpatialColumn,SpatialRowและSpatialCurvedRow(Iaf54f, b/495777633)
เวอร์ชัน 1.0.0-alpha12
25 มีนาคม 2026
androidx.xr.compose:compose:1.0.0-alpha12 และ androidx.xr.compose:compose-testing:1.0.0-alpha12 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha12 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
SpatialGltfModelAPI และSpatialGltfModelAnimationAPI เพื่อแสดงผล glTF และควบคุมภาพเคลื่อนไหว เปลี่ยนSpatialGltfModelStateเป็นAutoCloseableตอนนี้คุณจะต้องปิดเพื่อเพิ่มพื้นที่ว่างสำหรับทรัพยากร (I11fde, b/466065486, b/481379924) อย่างไรก็ตาม เราได้ทำเครื่องหมายSpatialGltfModelAPI ว่าถูกจำกัดสำหรับการเปิดตัวครั้งนี้ระหว่างรอการทดสอบเพิ่มเติม (Ibf003, b/466090694) - เพิ่มการโอเวอร์โหลดที่ว่างเปล่าที่เลิกใช้งานแล้วสำหรับ
SubspaceModifier.rotate(Idceb6) - เปลี่ยนชื่อฟังก์ชัน
SpatialSmoothFeatheringEffectเป็นspatialSmoothFeatheringEffectและย้ายไปยังโมดูลการวาด อัปเดตSpatialExternalSurfaceค่าการขนนกเริ่มต้นเป็น null ซึ่งเลียนแบบฟังก์ชันการทำงานของ ZeroFeatheringEffect แบบเดิม (I5fdaa, b/460426800) - นำ
onPointSourceParamsAvailableออกแล้ว API การทำให้เสียงเป็นมิติที่แตกต่างกันจะพร้อมใช้งานในอนาคตอันใกล้นี้ (I86507, b/458513439) - เพิ่มลักษณะการทำงาน RTL สำหรับตัวแก้ไขช่องว่างออฟเซ็ต นอกจากนี้ยังเพิ่ม
absoluteOffsetเพื่อละเว้นทิศทางของเลย์เอาต์ด้วย (I30e4b, b/474409165)
เวอร์ชัน 1.0.0-alpha11
25 กุมภาพันธ์ 2026
androidx.xr.compose:compose:1.0.0-alpha11 และ androidx.xr.compose:compose-testing:1.0.0-alpha11 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha11 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- การเพิ่มพารามิเตอร์
SuperSamplingไปยังSpatialExternalSurfaces(Icd4d1)
ปัญหาที่ทราบ
- ปัญหาเกี่ยวกับ
SurfaceEntityใน SceneCore อาจทำให้แอปขัดข้องเมื่อสร้างอินสแตนซ์ของSpatialExternalSurfaceปัญหานี้ได้รับการแก้ไขแล้วในandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13,androidx.xr.compose:compose:1.0.0-alpha12และรุ่นต่อๆ ไป แอปที่ได้รับผลกระทบควรได้รับการอัปเดตเป็นเวอร์ชันล่าสุด
การเปลี่ยนแปลง API
- การเปลี่ยนแปลงระยะขอบของตัวแก้ไข Subspace เพื่อให้รับรู้ทิศทางการจัดวาง (I53e25)
SpatialCapabilitiesปิดรับสมัครแล้วและไม่สามารถขยายเวลาได้ (I07aef)- API
SpatialRowและSpatialColumnที่ยอมรับพารามิเตอร์SpatialAlignmentทั่วไปถูกเลิกใช้งานแล้ว ให้ใช้ API ที่ยอมรับverticalAlignmentหรือhorizontalAlignmentสำหรับSpatialRowและSpatialColumnตามลำดับแทน (Iec390) - การรวม API ฟังก์ชันที่โอเวอร์โหลด
SubspaceLayout(Idd30a) - เปลี่ยนชื่อ
SubspaceModifier.lookAtUserเป็นrotateToLookAtUserและพารามิเตอร์upเป็นupDirection(Icafb8) - การทำให้
SpatialRowเป็นฟังก์ชันอินไลน์ (Ia2f20) - การทำให้
SpatialColumnเป็นฟังก์ชันอินไลน์ (I681be) - นำ API ป้ายโฆษณาดิจิทัลออก (Ib76cd)
เวอร์ชัน 1.0.0-alpha10
28 มกราคม 2026
androidx.xr.compose:compose:1.0.0-alpha10 และ androidx.xr.compose:compose-testing:1.0.0-alpha10 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha10 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- การนำ API ที่เลิกใช้งานแล้วออก -
ApplicationSubspace(Ia6596, b/468345186) - อัปเดต
SpatialShapeเป็นอินเทอร์เฟซที่ปิดผนึก (I7e3f5, b/460426800) - การนำ API ที่เลิกใช้งานแล้วออกใน
SpatialAlignment(Ib0b61, b/468011887) - เลิกใช้งาน
SpatialLayoutSpacerและเปิดตัวSpatialSpacer(I2ebf3, b/466071383) - อัปเดต API ของ
UserSubspaceเพื่อแทนที่คำศัพท์ "การล็อกแบบเลื่อย" ด้วย "การล็อกแบบยืดหยุ่น" (I9ded1, b/464035984)
เวอร์ชัน 1.0.0-alpha09
3 ธันวาคม 2025
androidx.xr.compose:compose:1.0.0-alpha09 และ androidx.xr.compose:compose-testing:1.0.0-alpha09 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha09 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- การเพิ่มตัวแก้ไข
LookAtUserและป้ายโฆษณาซึ่งช่วยให้เนื้อหาหันหน้าไปทางผู้ใช้เสมอ (I49b99) - เพิ่มความสามารถในการตั้งค่า
InteractionPolicyเป็นSpatialExternalSurfacesและSpatialPanelsซึ่งช่วยให้ตรวจจับการคลิกและเหตุการณ์อินพุต 3 มิติอื่นๆ ได้ (Iae155) - เพิ่มขนาดและ
requiredSizeการโอเวอร์โหลดตัวแก้ไขด้วยความกว้าง ความสูง และความลึกเป็นค่า Dp (I92f79) - ตอนนี้อินเทอร์เฟซ
ParentLayoutParamsModifierขยายเวลาเป็นDelegatableSubspaceNodeแล้ว (I1a6d4) ApplicationSubspaceเลิกใช้งานแล้วเพื่อใช้ Subspace API แทน- มีการเปลี่ยนแปลงลักษณะการทำงานของ Subspace API เพื่อให้มีเพียง Subspace ระดับแอปพลิเคชันที่ท่าทางและสเกลที่แนะนำ
- เราขอแนะนำ
PlanarEmbeddedSubspaceAPI เพื่อให้มีพื้นที่ย่อยแบบฝังในบริบท 2 มิติ (Id3343)
- เพิ่มฟีเจอร์
shouldAutoInvalidateไปยัง API ของSubspaceModifier.Node(I93902) - เพิ่ม
required(Size|Width|Depth|Height)ใน API ที่อนุญาตให้นักพัฒนาแอปจำกัด@SubspaceComposableขนาดขององค์ประกอบให้อยู่ในช่วงที่เฉพาะเจาะจง โดยไม่คำนึงถึงข้อจำกัดด้านการวัดที่เข้ามาขององค์ประกอบระดับบนสุด (Ifaa78) - เพิ่ม
SubspaceModifier.onSizeChangedซึ่งเป็นฟังก์ชันเรียกกลับที่เรียบง่ายและเฉพาะเจาะจงสำหรับนักพัฒนาแอปเพื่อตอบสนองเมื่อขนาดของ@SubspaceComposableเปลี่ยนแปลง (I994f9) - นำ Volume API ออกแล้ว คุณควรใช้
SceneCoreEntityAPI แทน Volume API (I4162b) - แยก
SubspaceLayoutModifierNode.requestRelayoutเป็นinvalidateMeasurement/invalidatePlacement(I14805) - เพิ่ม
SpatialGltfModelAPI ที่ช่วยให้นักพัฒนาซอฟต์แวร์แสดงผล glTF ใน Compose ได้ (Icc91f) - เปิดตัว
SpatialGltfModelAPI ที่ประกอบได้เพื่อการแสดงผล glTF ได้อย่างง่ายดาย (Iade67)
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องของเลย์เอาต์ใน
SceneCoreEntityตอนนี้ควรปฏิบัติตามข้อจำกัดอย่างถูกต้องแล้ว (I11bb8) - ลดระดับโมดูล jxr-compose เป็น
Compile sdk = 34(I2d5db)
เวอร์ชัน 1.0.0-alpha08
22 ตุลาคม 2025
androidx.xr.compose:compose:1.0.0-alpha08 และ androidx.xr.compose:compose-testing:1.0.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha08 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยน
ResizePolicyให้ยอมรับonResizeStart,onResizeUpdateและonResizeEnd(I7e21f)
การแก้ไขข้อบกพร่อง
- ป้องกันไม่ให้เกิดข้อขัดข้องเมื่อทำลายกิจกรรมด้วย Subspace (I595a1)
เวอร์ชัน 1.0.0-alpha07
24 กันยายน 2025
androidx.xr.compose:compose:1.0.0-alpha07 และ androidx.xr.compose:compose-testing:1.0.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ปรับปรุงเอกสารประกอบของ KDocs สำหรับ
SpatialMainPanel(I27b70, b/444467891) - เปิดตัว
SpatialArrangementสำหรับจัดเรียงองค์ประกอบย่อยตามแกนหลักในเลย์เอาต์ 3 มิติ เช่นSpatialRowและSpatialColumnAPI ใหม่นี้มีตัวเลือกการจัดเรียงที่คุ้นเคยจาก Compose 2 มิติ ซึ่งรวมถึงStart,End,Center,SpaceBetween,SpaceAroundและSpaceEvenlyโดยรองรับทั้งทิศทางการจัดวางจากซ้ายไปขวาและจากขวาไปซ้ายอย่างเต็มรูปแบบ (I7db38, b/436289959) - เพิ่มอินเทอร์เฟซพื้นฐานสำหรับ
SubspaceModifier.Nodeเพื่อปรับปรุงความปลอดภัยในการกำหนดประเภทและความสามารถในการใช้งานของอินเทอร์เฟซส่วนขยาย เช่นCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(ภายใน) (Iede00, b/440599394, b/440599394)
- ยกเลิกการจำกัด
SpatialExternalSurface(I33315, b/439646773) - แนะนำ
SubspaceModifierให้กับ Subspace composables และแทนที่พารามิเตอร์ข้อจำกัดด้วยSubspaceModifierที่มีSubspaceModifiersที่เกี่ยวข้องกับขนาด หากallowUnboundedSubspaceเป็นจริง Subspaces จะยังมีข้อจำกัดที่ไม่จำกัดได้ (Ib06e6, b/433331675) - เลิกใช้งาน
SubspaceModifiersที่ย้ายและปรับขนาดได้เนื่องจากDragPolicy()และResizePolicy()เป็นส่วนหนึ่งของSpatialPanelและSpatialExternalSurfaceAPI แล้ว (I397bf, b/437924639) - เพิ่มการรองรับ
LayoutDirectionในเลย์เอาต์เชิงพื้นที่ ตอนนี้ Composable ที่ใช้SpatialAlignmentจะจัดตำแหน่งองค์ประกอบอย่างถูกต้องในบริบท LTR และ RTL (I964bb, b/436300273) - เพิ่มพารามิเตอร์ที่ปรับขนาดและย้ายได้ลงใน
PanelAPI เพื่อให้มั่นใจว่าลักษณะการทำงานเหล่านี้จะใช้ได้กับคอนเทนเนอร์ที่รองรับเท่านั้น (Id491c) - เพิ่ม
sizeIn,widthIn,heightIn,depthInSubspaceModifiersที่ช่วยให้คุณกำหนดข้อจำกัดขั้นต่ำและสูงสุดที่แน่นอนสำหรับความกว้าง ความสูง และความลึกได้ (I1af09, b/433330761)
เวอร์ชัน 1.0.0-alpha06
13 สิงหาคม 2025
androidx.xr.compose:compose:1.0.0-alpha06 และ androidx.xr.compose:compose-testing:1.0.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- สร้าง
ComposeXrOwnerLocalsขึ้นใหม่เมื่อเจ้าของวงจรของออบเจ็กต์ถูกทำลาย (9123ce1)
เวอร์ชัน 1.0.0-alpha05
30 กรกฎาคม 2025
androidx.xr.compose:compose:1.0.0-alpha05 และ androidx.xr.compose:compose-testing:1.0.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- ทำให้คลาสคำอธิบายประกอบ
SubspaceComposableเป็นแบบสาธารณะ (Ic2a34, b/399432430) - Composables
SpatialExternalSurfaceใหม่ 2 รายการที่แสดงทรงกลม 180 และ 360 องศา (I40ef2, b/391705799) - เพิ่ม
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147) - เพิ่ม
SceneCoreEntityAPI เพื่อปรับปรุงความสามารถในการทำงานร่วมกันระหว่างSceneCoreกับ Compose for XR (I50bb3, b/423020989) - จัดเตรียม
GravityAlignedsubspaceAPI เพื่อรองรับฟีเจอร์GravityAlignedที่ไม่ปรับขนาด (I07359)
การเปลี่ยนแปลง API
SpatialDialog()จะทำตามการกำหนดค่าการกดSpatialDialogProperties.dismissOnBack(Ib453b, b/416797132)- อัปเดต
minimumPanelDimensionเป็นขนาดมิติข้อมูลเริ่มต้นใหม่ที่Dimensions(0.1f, 0.1f, 0.1f)เนื่องจากมีการแสดงผลเป็นเมตร (Ib852a) - ตอนนี้ Subspace และ Orbiter จะยังคงสถานะภายในไว้ในพื้นที่บ้านและเมื่อแอปทำงานในเบื้องหลัง ในโหมด Home Space นั้น Subspace จะยังคงตั้งค่าฉากเพื่อเตรียมพร้อมสำหรับการเปลี่ยนไปใช้โหมด Full Space (I40317, b/416037751)
SpatialDialogsจะคงสถานะไว้เมื่อแอปทำงานในเบื้องหลัง (I6aa56)- ตอนนี้
ApplicationSubspaceจะรับช่วงขนาดและตำแหน่งที่แนะนำจากระบบ (I4565f, b/418834194) - เพิ่มข้อความแสดงข้อผิดพลาดที่ดีขึ้นและทริกเกอร์ข้อผิดพลาดก่อนหน้านี้เมื่อใช้
SubspaceComposableในบริบทที่ไม่ใช่SubspaceComposable(Iee2ae, b/416484684) - อัปเดต
ExperimentalSubspaceVolumeApiจากคำเตือนเป็นข้อผิดพลาดเนื่องจากมักจะมองข้ามคำเตือนเมื่อใช้ API ที่ประกอบได้ในทางที่ผิด (I427aa, b/424864286) - ตอนนี้ Subspace และ
ApplicationSubspaceถูกจำกัดโดยrecommendedContentBoxInFullSpaceก่อนหน้านี้จะถูกจำกัดด้วยขอบเขตการมองเห็นของSpatialUser(I41015, b/423074142) - อัปเดต
SpatialElevationให้ใช้ขนาดขั้นต่ำเพื่อเลิกใช้ขนาดที่ฮาร์ดโค้ด (I2dbe6, b/427785338) - อัปเดตวิธีที่เราใช้การทดสอบ
SpatialAcitivityPanelเพื่ออัปเดตเมื่อมีการแก้ไขตัวแปรสำคัญ (I0f64d, b/427999029) - นำ
VolumeConstraints.Unboundedออกเพื่อตั้งค่าข้อจำกัดเริ่มต้นให้เทียบเท่ากัน (Ie24ec, b/407938414) SpatialFeatheringSizeไม่ได้เผยแพร่ต่อสาธารณะอีกต่อไป (I1c15b, b/399432430)- เปลี่ยนชื่อ XR
Placeableเป็นSubspacePlaceableเพื่อให้แตกต่างจากPlaceableของ Compose (I74874) - นำการตั้งค่า Orbiter ออกและเพิ่ม
shouldRenderInNonSpatialเป็นพารามิเตอร์ใหม่ นอกจากนี้ ยังนำคลาสEdgeOffsetออกและเพิ่มorbiterOffsetTypeเป็นพารามิเตอร์ใหม่เพื่อรวมฟังก์ชันOrbiter()รวมถึงเปลี่ยนชื่อOrbiterEdgeเป็นContentEdge(Iebf3d) - เปลี่ยนชื่อ
Measurableเป็นSubspaceMeasurableเพื่อแยกความแตกต่างของประเภทจากประเภทMeasurableของ Compose (I9726c) - เปลี่ยนชื่อ
MeasureResultเป็นSubspaceMeasureResult(I9f34d) - นำ
setSubspaceContentAPI ออกเพื่อใช้setContentของ Compose กับ ComposableSubspace(Ifff4c, b/421427391, b/421427391) - เปลี่ยนชื่อ
MeasurePolicyเป็นSubspaceMeasurePolicyแล้ว (I37a9b, b/422553904) - เปลี่ยน
SubspaceSemanticsInfoเป็นอินเทอร์เฟซที่ปิดสนิทเนื่องจากเราจะเพิ่มสมาชิกไม่ได้หากไม่มีค่าเริ่มต้น (I372f9, b/423704068) - อัปเดตเอกสาร
SpatialExternalSurfaceเปลี่ยนชื่อContentSecurityLevelเป็นSurfaceProtection(I3c460, b/420982808) - มีตัวสร้างที่โอเวอร์โหลดสำหรับตัวแก้ไขที่เคลื่อนย้ายได้ซึ่งอนุญาตการยึด (Ic0c70)
- เพิ่มผู้ให้บริการตำแหน่งสำหรับเคล็ดลับเครื่องมือ เพื่อให้นักพัฒนาแอปควบคุมได้ว่าเคล็ดลับเครื่องมือจะอยู่เหนือ ใต้ ซ้าย หรือขวาของจุดยึด เพิ่ม API ที่รับ Shape สำหรับเครื่องหมายแคริเอท เพื่อให้ระบุรูปร่างที่กำหนดเองได้มากขึ้น (Ie513c, b/374766087, b/418854637)
- นำ
CoreEntityออกเนื่องจากเป็นPublishedApi(Ifee05)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
SpatialDialogจะกะพริบเมื่อแสดงผล (Ife73c, b/401619909) - แก้ไขปัญหาที่
SpatialDialogไม่สามารถปิดบังแผงกิจกรรมได้ (I8ca6c, b/367442109) - แก้ไขกล่องโต้ตอบ XR ที่ไม่แสดงเนื้อหาบางอย่าง (I17cd5, b/418062437)
- แก้ปัญหาที่
SpatialPopupถูกปิดเมื่อคลิกภายในเนื้อหา (If262c, b/417245722) - แก้ไขปัญหาที่เมื่อต่อเชน
resizable().movable()SpatialPanel จะปรับขนาดเป็นขนาดใหม่ไม่ถูกต้อง (I02ee3, b/422264230) - แก้ไขปัญหา
topBarทับซ้อนกับเมนูในSpatialComposeVideoPlayer(Id33bc, b/427168167) - รัศมีมุมคงที่แสดงผลไม่ถูกต้อง (I975fe, b/428261830)
เวอร์ชัน 1.0.0-alpha04
7 พฤษภาคม 2025
androidx.xr.compose:compose:1.0.0-alpha04 และ androidx.xr.compose:compose-testing:1.0.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha04 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มอินเทอร์เฟซ
CompositionLocalConsumerSubspaceModifierNodeเพื่อให้ประเภทSubspaceModifierที่กำหนดเองเข้าถึงค่าภายในขององค์ประกอบได้ - เพิ่ม
SpatialPanelAPI ใหม่ที่ใช้รูปแบบการใช้งานAndroidViewของ Compose และเลิกใช้งานViewBased SpatialPanelก่อนหน้า - เพิ่มออบเจ็กต์เสริม
VolumeConstraints.Unboundedซึ่งแสดงข้อจำกัดที่ไม่จำกัด - เพิ่ม
SubspaceModifier.onPointSourceParamsเพื่ออนุญาตแหล่งเสียงเชิงพื้นที่ - มีการเพิ่ม
ApplicationSubspaceสาธารณะ ซึ่งมีVolumeConstraintsที่ไม่บังคับเพื่อกำหนดพื้นที่ 3 มิติที่แอปแสดงเนื้อหาเชิงพื้นที่ได้ โดยค่าเริ่มต้น หากไม่ได้ระบุข้อจำกัดใดๆ ขอบเขตของ Subspace จะกำหนดโดยฟิลด์มุมมองปัจจุบันของSpatialUserในด้านความกว้างและความสูง ผู้ใช้สามารถระบุข้อจำกัดที่จะใช้ได้หากไม่สามารถกำหนดขอบเขตการมองเห็นได้ ไม่เช่นนั้น ระบบจะใช้ค่าความกว้างและความสูงของขอบเขตการมองเห็นเริ่มต้น - เพิ่ม
SpatialExternalSurfaceซึ่งใช้ในการแสดงเนื้อหาสามมิติได้SpatialExternalSurfaceปรับแต่งได้ด้วยตัวแก้ไข (ยกเว้นอัลฟ่า) และเอฟเฟกต์ขนนกที่ขอบ - เพิ่ม
pointerHoverIconตัวปรับเปลี่ยนพื้นที่ย่อยใหม่ที่ช่วยให้ผู้ใช้ตั้งค่าไอคอนสำหรับเคอร์เซอร์เชิงพื้นที่ได้
การเปลี่ยนแปลง API
- นำข้อจำกัด
RequiresApi(34)ออกจากแพ็กเกจ Jetpack XR ทั้งหมด การจำกัดนี้ซ้ำซ้อนเนื่องจากปัจจุบัน Jetpack XR ใช้ได้เฉพาะในอุปกรณ์ที่มีระดับ API 34 ขึ้นไป (Iae0f8) - โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
- ตอนนี้การจัดการย้อนกลับจะใช้ได้ในแผงเชิงพื้นที่โดยไม่มีกิจกรรมที่ฝังไว้ หากต้องการให้การจัดการย้อนกลับทำงาน คุณต้องระบุ
android:enableOnBackInvokedCallback="true"ใน Android Manifest - ตอนนี้การจัดการย้อนกลับจะใช้ได้กับกล่องโต้ตอบเชิงพื้นที่แล้ว หากต้องการให้การจัดการย้อนกลับทำงาน คุณต้องระบุ
android:enableOnBackInvokedCallback="true"ในไฟล์ Manifest ของ Android - ตอนนี้
SpatialPanelที่อิงตาม Compose และ View สามารถปรับขนาดได้ตามเนื้อหาแล้ว - ตอนนี้ นักพัฒนาแอปสามารถตั้งค่า
SpatialElevationLevelที่กำหนดเองได้แล้ว และไม่จำกัดเฉพาะระดับที่กำหนดไว้ล่วงหน้า - ตอนนี้คุณปรับแต่งระดับความสูงของ Orbiter ได้แล้วผ่านพารามิเตอร์
elevation - ตอนนี้ Subspace สามารถจำกัดด้วย
SpatialUserขอบเขตการมองเห็นของกล้องในความกว้างและความสูงได้โดยค่าเริ่มต้น หากกำหนดขอบเขตการมองเห็นไม่ได้ ระบบจะใช้ค่าความกว้างและความสูงของขอบเขตการมองเห็นเริ่มต้น - เพิ่มการเรียกกลับ
onMoveStartและonMoveEndใหม่ลงในตัวแก้ไขMovableระบบจะเรียกใช้การเรียกกลับonMoveStartและonMoveEndเมื่อผู้ใช้เริ่มและหยุดการย้ายพื้นที่ย่อยที่ประกอบได้ด้วยตัวแก้ไขที่เคลื่อนย้ายได้ - พารามิเตอร์
nameถูกนำออกจาก Spatial API เช่นSpatialRowและSpatialPanelหากต้องการแก้ไขข้อบกพร่องของโครงสร้างต้นไม้การจัดองค์ประกอบเชิงพื้นที่ ให้ใช้SubspaceModifier.testTagแทน - นำการโอเวอร์โหลดที่ไม่รองรับของ
SpatialPopupที่มีเฉพาะspatialElevationLevelและcontentออก โปรดใช้อินเทอร์เฟซที่รองรับonDimissRequest - ระบบได้นำการเรียกกลับ
onPoseChangeจากตัวแก้ไขที่เคลื่อนย้ายได้ออกแล้ว โปรดใช้onMoveแทน SubspaceModifiersจะไม่มีผลอีกต่อไปหากมีการแยกออกหรือกำลังแยกออก- เราได้แบ่ง
SpatialRowAPI ที่มีอยู่เป็นSpatialRowและSpatialCurvedRowหากก่อนหน้านี้ใช้พารามิเตอร์SpatialRow'scurveRadiusให้ใช้SpatialCurvedRowแทน ซึ่งมีลักษณะการทำงานเหมือนกัน MainPanelและActivityPanelจะไม่มีแถบชื่ออีกต่อไปเมื่อเรียกใช้ในอิมเมจระบบที่เพิ่งอัปเดตในลักษณะเดียวกัน- ตอนนี้ตัวปรับอัลฟ่าและตัวปรับสเกลสามารถซ้อนกันได้ และจะคูณค่าของตัวปรับเหล่านั้นเพื่อให้ได้ค่าอัลฟ่าหรือค่าสเกลสุดท้ายที่ใช้
onPoseChangeการเรียกกลับจากตัวแก้ไขที่เคลื่อนย้ายได้ได้รับการเพิ่มประสิทธิภาพเพื่อให้การเคลื่อนไหวของท่าทางราบรื่นยิ่งขึ้น- ตอนนี้ตัวปรับแต่งที่ย้ายและปรับขนาดได้จะเรียกใช้ฟังก์ชันเรียกกลับในเทรดหลักเพื่อให้มั่นใจว่าการเปลี่ยนแปลงสถานะจะทริกเกอร์การจัดองค์ประกอบใหม่
- เพิ่มการสังเกตสถานะในเลย์เอาต์และเฟสการวัดเพื่อให้มั่นใจว่าการเปลี่ยนแปลงสถานะใน
SubspaceLayoutจะทริกเกอร์การจัดเลย์เอาต์ใหม่ - อัปเดตเชนตัวแก้ไขที่เพิ่มประสิทธิภาพเพื่อนำตัวแก้ไขที่มีอยู่กลับมาใช้ซ้ำได้ดียิ่งขึ้น
การแก้ไขข้อบกพร่อง
- หยุดการแสดงเลเยอร์ทึบเมื่อแสดง
SpatialDialog(Ic4594) - ตอนนี้ระบบจะไม่สนใจคำขอเลย์เอาต์ใหม่ที่ส่งขณะที่โหนดตัวแก้ไขถูกแยกออก
- นำเฟสการจัดเลย์เอาต์ใหม่ที่ทริกเกอร์โดยตัวแก้ไขที่ย้ายและปรับขนาดได้ออก
- แก้ไขข้อขัดข้องใน
MainPanel()ที่ประกอบได้ซึ่งเกิดขึ้นเมื่อตั้งค่ามิติข้อมูลใดมิติข้อมูลหนึ่งเป็น 0 ไม่ว่าจะโดยตรงหรือในระหว่างการคำนวณเลย์เอาต์ เช่น การคำนวณSpatialRow/SpatialColumnตอนนี้ระบบจะซ่อนแผงแทน โปรดทราบว่าการแก้ไขนี้จะแก้ปัญหาการขัดข้องในระหว่างขั้นตอนการจัดวางโดยเฉพาะ ส่วนการปรับขนาดแผงเป็น 0 ผ่านการโต้ตอบของผู้ใช้จะได้รับการจัดการแยกต่างหาก แผงที่ซ่อนไม่มีความสามารถในการใช้งาน UI - แก้ไขปัญหาเกี่ยวกับ
maintainAspectRatioจากตัวแก้ไขที่ปรับขนาดได้ ตอนนี้สัดส่วนภาพควรจะคงเดิม - แก้ไขปัญหาเกี่ยวกับพื้นที่ย่อยที่ซ้อนกันซึ่งจะวางตำแหน่งไม่ถูกต้องสำหรับเฟรมเดียว
- แก้ไขปัญหาที่บางครั้งระบบไม่ใช้มุมโค้งเมื่อควรใช้
NestedSubspacesจะไม่ปรากฏในเฟรมเดียวในตำแหน่งที่ไม่ถูกต้องอีกต่อไป
เวอร์ชัน 1.0.0-alpha03
26 กุมภาพันธ์ 2025
androidx.xr.compose:compose:1.0.0-alpha03 และ androidx.xr.compose:compose-testing:1.0.0-alpha03 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงที่สำคัญนับตั้งแต่เวอร์ชันอัลฟ่าล่าสุด เวอร์ชัน 1.0.0-alpha03 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.0.0-alpha02
12 กุมภาพันธ์ 2025
androidx.xr.compose:compose:1.0.0-alpha02 และ androidx.xr.compose:compose-testing:1.0.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้แผงกิจกรรมสามารถปิดทึบเนื้อหาเมื่อเปิดใช้งานกล่องโต้ตอบเชิงพื้นที่
- ตอนนี้คุณใช้
OrbiterAPI ในบริบทSubspaceComposableได้แล้ว และจะแนบ Orbiters กับองค์ประกอบหลักที่ใช้SubspaceLayoutที่ใกล้ที่สุด - เปิดตัว
LayoutCoordinatesAwareModifierNodeเพื่ออนุญาตตัวแก้ไขตามตำแหน่งที่กำหนดเอง - เพิ่มวิธีการวงจรการต่อเชื่อม/ปลดออกไปยัง
SubspaceModifier.Node - เพิ่ม
scaleWithDistanceไปยังตัวปรับที่เคลื่อนย้ายได้ เมื่อเปิดใช้scaleWithDistanceองค์ประกอบของพื้นที่ย่อยที่ย้ายจะขยายหรือหด นอกจากนี้ ยังคงรักษาสเกลที่ชัดเจนซึ่งมีอยู่ก่อนการเคลื่อนไหวด้วย
การเปลี่ยนแปลง API
- นำ
SessionCallbackProviderออกเพื่อใช้SpatialCapabilitiesแทน
การเปลี่ยนแปลงอื่นๆ
- ลด
minSDKเหลือ 24 API ของ Jetpack XR ทั้งหมดจะยังคงต้องใช้ API 34 ในรันไทม์ OrbiterEdgeOffset.inner,EdgeOffset.outerและEdgeOffset.overlapไม่ใช่@Composableเมธอดอีกต่อไป ซึ่งทำให้ใช้ในบริบทที่ไม่สามารถคอมโพสได้- อัปเดตระดับความสูงเชิงพื้นที่ให้ตรงกับข้อกำหนด UX ล่าสุด
- ติดตั้งใช้งานอินเทอร์เฟซ
SubspaceSemanticsInfoในMeasurableLayout - เปลี่ยนชื่อ
SubspaceModifierElementเป็นSubspaceModifierNodeElementแล้ว
แก้ไขข้อบกพร่อง
- แก้ไขเพื่อทำให้การสั่งซื้อ
SubspaceModifierมีความเสถียรSubspaceModifierควรทำงานได้อย่างน่าเชื่อถือมากขึ้น ตอนนี้คุณควรใช้ตัวแก้ไขออฟเซ็ต หมุน ปรับขนาด เคลื่อนย้ายได้ และปรับขนาดได้ในลำดับใดก็ได้
เวอร์ชัน 1.0.0-alpha01
12 ธันวาคม 2024
ระบบจะถอนการอ้างสิทธิ์androidx.xr.compose:compose-*1.0.0-alpha01
ฟีเจอร์ของรุ่นแรก
การเปิดตัว Jetpack Compose สำหรับ XR เวอร์ชันนักพัฒนาครั้งแรก ใช้แนวคิด Compose ที่คุ้นเคย เช่น แถวและคอลัมน์ เพื่อสร้างเลย์เอาต์ UI เชิงพื้นที่ใน XR ไม่ว่าคุณจะพอร์ตแอป 2 มิติที่มีอยู่ไปยัง XR หรือสร้างแอป XR ใหม่ตั้งแต่ต้น ไลบรารีนี้มี Subspace และ Spatial Composables เช่น แผงเชิงพื้นที่และ Orbiters ซึ่งช่วยให้คุณวาง UI ที่มีอยู่ซึ่งอิงตาม Compose หรือ Views ในเลย์เอาต์เชิงพื้นที่ได้ โดยจะแนะนำ Volume subspace composable ซึ่งช่วยให้คุณวางเอนทิตี SceneCore เช่น โมเดล 3 มิติ ไว้สัมพันธ์กับ UI ได้ ดูข้อมูลเพิ่มเติมได้ในคู่มือนักพัฒนาซอฟต์แวร์นี้
Subspace: วาง Composable นี้ได้ทุกที่ภายในลําดับชั้น UI ของแอป ซึ่งช่วยให้คุณรักษาเลย์เอาต์สําหรับ UI 2 มิติและเชิงพื้นที่ได้โดยไม่สูญเสียบริบทระหว่างไฟล์ ซึ่งจะช่วยให้แชร์สิ่งต่างๆ เช่น สถาปัตยกรรมของแอปที่มีอยู่ระหว่าง XR กับอุปกรณ์รูปแบบอื่นๆ ได้ง่ายขึ้นโดยไม่ต้องยกสถานะผ่านทั้งโครงสร้าง UI หรือปรับโครงสร้างแอปใหม่SpatialPanel: SpatialPanel เป็น Subspace Compositable ที่ให้คุณแสดงเนื้อหาแอปได้ เช่น คุณอาจแสดงการเล่นวิดีโอ ภาพนิ่ง หรือเนื้อหาอื่นๆ ใน SpatialPanel
Orbiter: Orbiter คือคอมโพเนนต์ UI เชิงพื้นที่ โดยออกแบบมาให้แนบกับแผงเชิงพื้นที่ที่เกี่ยวข้อง และมีรายการการนำทางและการดำเนินการตามบริบทที่เกี่ยวข้องกับแผงเชิงพื้นที่นั้น เช่น หากคุณสร้างแผงเชิงพื้นที่เพื่อแสดงเนื้อหาวิดีโอ คุณจะเพิ่มตัวควบคุมการเล่นวิดีโอภายในออบิเตอร์ได้
ปริมาตร: วางเอนทิตี SceneCore เช่น โมเดล 3 มิติ เทียบกับ UI
เลย์เอาต์เชิงพื้นที่ คุณสร้างแผงเชิงพื้นที่หลายแผงและวางไว้ภายในเลย์เอาต์เชิงพื้นที่ได้โดยใช้
SpatialRow,SpatialColumn,SpatialBoxและSpatialLayoutSpacerใช้SubspaceModifiers เพื่อปรับแต่งเลย์เอาต์คอมโพเนนต์ UI เชิงพื้นที่: องค์ประกอบเหล่านี้สามารถนำกลับมาใช้ซ้ำใน UI 2 มิติได้ และจะมองเห็นแอตทริบิวต์เชิงพื้นที่ได้ก็ต่อเมื่อเปิดใช้ความสามารถเชิงพื้นที่เท่านั้น
SpatialDialog: แผงจะเลื่อนกลับไปเล็กน้อยในแนวลึก z เพื่อแสดงกล่องโต้ตอบที่ยกระดับSpatialPopUp: แผงจะเลื่อนกลับไปเล็กน้อยในความลึกของแกน Z เพื่อแสดงป๊อปอัปที่ยกระดับขึ้นSpatialElevation: ตั้งค่าSpatialElevationLevelเพื่อเพิ่มระดับความสูงได้
SpatialCapabilities: ความสามารถเชิงพื้นที่อาจเปลี่ยนแปลงได้เมื่อผู้ใช้โต้ตอบกับแอปหรือระบบ หรือแม้แต่แอปของคุณเองก็อาจเปลี่ยนแปลงได้ เช่น การย้ายไปยัง Home Space หรือ Full Space แอปของคุณต้องตรวจสอบ
LocalSpatialCapabilities.currentเพื่อพิจารณาว่า API ใดบ้างที่รองรับในสภาพแวดล้อมปัจจุบัน เพื่อหลีกเลี่ยงปัญหาisSpatialUiEnabled: องค์ประกอบ UI เชิงพื้นที่ (เช่น SpatialPanel)isContent3dEnabled: ออบเจ็กต์ 3 มิติisAppEnvironmentEnabled: สภาพแวดล้อมisPassthroughControlEnabled: แอปพลิเคชันควบคุมสถานะการส่งผ่านได้หรือไม่isSpatialAudioEnabled: เสียงรอบทิศทาง
ปัญหาที่ทราบ
- ปัจจุบันต้องใช้ minSDK 30 เพื่อใช้ Jetpack Compose สำหรับ XR วิธีแก้ปัญหาชั่วคราวคือคุณอาจเพิ่มรายการ Manifest ต่อไปนี้
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>เพื่อให้สามารถสร้างและเรียกใช้ด้วย minSDK 23 ได้ - ปัจจุบันแอป Jetpack XR ต้องขอสิทธิ์
android.permission.SCENE_UNDERSTANDINGใน AndroidManifest - เมื่อแอปเปิดใน Full Space โดยตรงโดยใช้พร็อพเพอร์ตี้
PROPERTY_XR_ACTIVITY_START_MODEในไฟล์ Manifest ระบบจะเปิดกิจกรรม/แอปพลิเคชันใน Home Space ก่อน จากนั้นจึงเปลี่ยนไปเป็น Full Space - glTF ใน Volume Composables อาจกะพริบในตำแหน่งที่ไม่ถูกต้องในตอนแรก
- การใช้ SpatialDialog ในแผงที่ย้ายไปไกลมากจะทำให้เนื้อหาไปในทิศทางที่ไม่ถูกต้อง