Jetpack Compose สำหรับ XR
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 22 ตุลาคม 2025 | - | - | - | 1.0.0-alpha08 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน XR Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
ดึงดูด
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha08" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha08" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha08") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha08") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
รุ่น 1.0
เวอร์ชัน 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
- ปรับปรุงเอกสารประกอบของ Kotlin สำหรับ
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เป็นจริง พื้นที่ย่อยจะยังมีข้อจำกัดที่ไม่จำกัดได้ (Ib06e6, b/433331675) - เลิกใช้งาน
SubspaceModifiersที่ย้ายและปรับขนาดได้เนื่องจากDragPolicy()และResizePolicy()เป็นส่วนหนึ่งของSpatialPanelและSpatialExternalSurfaceAPI แล้ว (I397bf, b/437924639) - เพิ่มการรองรับ
LayoutDirectionในเลย์เอาต์เชิงพื้นที่ ตอนนี้ Composable ที่ใช้SpatialAlignmentจะวางตำแหน่งองค์ประกอบอย่างถูกต้องในบริบท LTR และ RTL (I964bb, b/436300273) - เพิ่มพารามิเตอร์ที่ปรับขนาดและย้ายได้ลงใน API ของ
Panelเพื่อให้มั่นใจว่าลักษณะการทำงานเหล่านี้จะใช้ได้กับคอนเทนเนอร์ที่รองรับเท่านั้น (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) SpatialExternalSurfaceComposable ใหม่ 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 จะยังคงสถานะภายในไว้ในพื้นที่บ้านและเมื่อแอปทำงานในเบื้องหลัง ในโหมดพื้นที่หน้าหลัก Subspace จะยังคงตั้งค่าฉากเพื่อเตรียมพร้อมสำหรับการเปลี่ยนไปใช้โหมดพื้นที่เต็ม (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 ใหม่ที่ใช้รูปแบบการติดตั้งใช้งานของ ComposeAndroidViewและเลิกใช้งาน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หากก่อนหน้านี้ใช้พารามิเตอร์SpatialRowcurveRadiusให้ใช้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ได้แล้ว และจะแนบ Orbiter กับองค์ประกอบหลักที่ใช้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 ที่มีอยู่แบบ 2D Compose หรือ UI ที่อิงตาม View ในเลย์เอาต์เชิงพื้นที่ได้ โดยจะแนะนำ Volume subspace composable ซึ่งช่วยให้คุณวางเอนทิตี SceneCore เช่น โมเดล 3 มิติ ไว้สัมพันธ์กับ UI ได้ ดูข้อมูลเพิ่มเติมในคู่มือนักพัฒนาซอฟต์แวร์นี้
Subspace: วัตถุที่ใช้ร่วมกันนี้สามารถวางได้ทุกที่ภายในลำดับชั้น 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: แผงจะเลื่อนกลับไปเล็กน้อยในแนวลึกเพื่อแสดงกล่องโต้ตอบที่ยกระดับ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 ในแผงที่ย้ายไปไกลมากจะทำให้เนื้อหาไปในทิศทางที่ไม่ถูกต้อง