Jetpack Compose สำหรับ XR
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
12 ธันวาคม 2024 | - | - | - | 1.0.0-alpha01 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ของ XR Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
ดึงดูด
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha01" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha01") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha01") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพิงบิวด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมในเอกสารประกอบของเครื่องมือติดตามปัญหา
รุ่น 1.0
เวอร์ชัน 1.0.0-alpha01
12 ธันวาคม 2024
androidx.xr.compose:compose-*1.0.0-alpha01
ได้รับการปล่อยแล้ว
ฟีเจอร์ของรุ่นแรก
เวอร์ชันสำหรับนักพัฒนาแอปครั้งแรกของ Jetpack Compose สำหรับ XR ใช้แนวคิดที่คุ้นเคยของ Compose เช่น แถวและคอลัมน์เพื่อสร้างเลย์เอาต์ UI แบบพื้นที่ใน XR ไม่ว่าคุณจะพอร์ตแอป 2 มิติที่มีอยู่ไปยัง XR หรือสร้างแอป XR ใหม่ตั้งแต่ต้น ไลบรารีนี้มีองค์ประกอบย่อยและองค์ประกอบเชิงพื้นที่ เช่น แผงเชิงพื้นที่และออบิเตอร์ ซึ่งช่วยให้คุณวาง UI ของ Compose 2 มิติหรือ UI ที่อิงตาม Views ที่มีอยู่ลงในเลย์เอาต์เชิงพื้นที่ได้ โดยมีการเปิดตัวองค์ประกอบย่อยของปริมาตร ซึ่งช่วยให้คุณวางเอนทิตี SceneCore เช่น โมเดล 3 มิติ เทียบกับ UI ได้ ดูข้อมูลเพิ่มเติมในคู่มือนักพัฒนาซอฟต์แวร์นี้
Subspace
: คอมโพสิชันนี้สามารถวางไว้ที่ใดก็ได้ภายในลําดับชั้น UI ของแอป ซึ่งช่วยให้คุณคงเลย์เอาต์สําหรับ UI 2 มิติและ UI เชิงพื้นที่ไว้ได้โดยไม่สูญเสียบริบทระหว่างไฟล์ วิธีนี้ช่วยให้แชร์สิ่งต่างๆ เช่น สถาปัตยกรรมแอปที่มีอยู่ระหว่าง XR กับอุปกรณ์รูปแบบอื่นๆ ได้ง่ายขึ้นโดยไม่ต้องยกสถานะผ่านทั้งต้นไม้ UI หรือปรับโครงสร้างแอปใหม่SpatialPanel: แผงเชิงพื้นที่คือคอมโพสิชันย่อยที่ให้คุณแสดงเนื้อหาแอป เช่น คุณสามารถแสดงการเล่นวิดีโอ ภาพนิ่ง หรือเนื้อหาอื่นๆ ในแผงเชิงพื้นที่
Orbiter: Orbiter คือคอมโพเนนต์ UI เชิงพื้นที่ ออกแบบมาเพื่อแนบกับแผงเชิงพื้นที่ที่เกี่ยวข้อง และมีรายการการนำทางและรายการการดำเนินการตามบริบทที่เกี่ยวข้องกับแผงเชิงพื้นที่นั้น เช่น หากสร้างแผงเชิงพื้นที่เพื่อแสดงเนื้อหาวิดีโอ คุณสามารถเพิ่มตัวควบคุมการเล่นวิดีโอไว้ในวงโคจร
ปริมาตร: วางเอนทิตี SceneCore เช่น โมเดล 3 มิติ โดยสัมพันธ์กับ UI
เลย์เอาต์พื้นที่ทำงาน: คุณสร้างแผงพื้นที่ทำงานหลายรายการและวางไว้ในเลย์เอาต์พื้นที่ทำงานได้โดยใช้
SpatialRow
,SpatialColumn
,SpatialBox
และSpatialLayoutSpacer
ใช้SubspaceModifier
เพื่อปรับแต่งเลย์เอาต์คอมโพเนนต์ UI เชิงพื้นที่: คุณนําองค์ประกอบเหล่านี้มาใช้ซ้ำใน UI 2 มิติได้ และจะเห็นแอตทริบิวต์เชิงพื้นที่ก็ต่อเมื่อเปิดใช้ความสามารถเชิงพื้นที่เท่านั้น
SpatialDialog
: แผงจะดันกลับเล็กน้อยในเชิงลึกเพื่อแสดงกล่องโต้ตอบที่ยกระดับSpatialPopUp
: แผงจะดันกลับเล็กน้อยใน Z-depth เพื่อแสดงป๊อปอัปที่ยกสูงขึ้นSpatialElevation
:SpatialElevationLevel
สามารถตั้งค่าเพื่อเพิ่มระดับความสูงได้
SpatialCapabilities: ความสามารถเชิงพื้นที่อาจเปลี่ยนแปลงเมื่อผู้ใช้โต้ตอบกับแอปหรือระบบ หรือแอปของคุณเองก็อาจเปลี่ยนแปลงความสามารถเชิงพื้นที่ได้ เช่น การเปลี่ยนเป็นโหมดพื้นที่ในบ้านหรือพื้นที่เต็ม แอปของคุณต้องตรวจสอบ
LocalSpatialCapabilities.current
เพื่อดูว่าระบบรองรับ API ใดบ้างในสภาพแวดล้อมปัจจุบัน เพื่อหลีกเลี่ยงปัญหาisSpatialUiEnabled
: องค์ประกอบ UI แบบ 3 มิติ (เช่น 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 - เมื่อแอปเปิดในโหมดเต็มหน้าจอโดยตรงโดยใช้พร็อพเพอร์ตี้
PROPERTY_XR_ACTIVITY_START_MODE
ในไฟล์ Manifest กิจกรรม/แอปพลิเคชันจะเปิดในโฮมสเปซก่อน จากนั้นจึงเปลี่ยนไปเป็นโหมดเต็มหน้าจอ - ในตอนแรก glTF ในองค์ประกอบแบบปริมาตรอาจกะพริบในตำแหน่งที่ไม่ถูกต้อง
- การใช้ SpatialDialog ในแผงที่มีการย้ายไปมากจะดันเนื้อหาไปในทิศทางที่ไม่ถูกต้อง