ทำความเข้าใจตัวแก้ไขพื้นที่ย่อย

อุปกรณ์ XR ที่รองรับ
คำแนะนำนี้จะช่วยคุณสร้างประสบการณ์การใช้งานสำหรับอุปกรณ์ XR ประเภทต่างๆ
ชุดหูฟัง XR
แว่นตา XR แบบใช้สาย

A SubspaceModifier มีลักษณะคล้ายกับ ตัวปรับแต่ง Compose สำหรับคอมโพสได้ ใน Subspace SubspaceModifier ช่วยให้คุณจัดการคอมโพสได้ในพื้นที่ 3 มิติ ซึ่งจะช่วยให้คุณจัดตำแหน่ง หมุน และเพิ่มลักษณะการทำงานให้กับโหนดเลย์เอาต์ 3 มิติได้

การจัดวาง

โดยค่าเริ่มต้น Subspace จะถูกจำกัดด้วยพื้นที่ที่แนะนำสำหรับการดู แอป ระบบจะใช้ขอบเขตเหล่านี้เมื่อวัดเลย์เอาต์ของคอมโพเนนต์ Subspace ซึ่งคล้ายกับขอบเขตในเลย์เอาต์ Compose 2 มิติ

ขอบเขตการเติม

ตัวปรับแต่ง fillMaxSize, fillMaxWidth, fillMaxHeight และ fillMaxDepth จะทำให้เนื้อหาเติมขอบเขตขององค์ประกอบระดับบน (บางส่วน) การใช้ตัวปรับแต่งการเติมจะช่วยให้แอปจัดวางเนื้อหาที่เป็นอิสระจากลักษณะการแสดงผลของอุปกรณ์ XR ได้

ตั้งค่าขนาดและขนาดที่จำเป็น

ตัวปรับแต่ง size, width, height และ depth จะประกาศขนาดที่ต้องการของเนื้อหา หากต้องการประกาศขนาดที่แน่นอนของ เนื้อหา ให้ใช้ requiredSize, requiredWidth, requiredHeight และ requiredDepth คุณต้องระบุหน่วยเหล่านี้เป็น dp หากต้องการแปลงจากเมตรเป็น dp ให้ใช้ Meter.toDp()

จัดตำแหน่งคอมโพสได้

offset

ตัวปรับแต่ง offset จะย้ายคอมโพสได้ในพื้นที่ 3 มิติไปตามแกน x, y, และ z คุณต้องระบุหน่วยเหล่านี้เป็น dp หากต้องการแปลงจากเมตรเป็น dp ให้ใช้ Meter.toDp()

rotate

ตัวปรับแต่ง rotate จะหมุนคอมโพสได้ที่ระบุในพื้นที่ คุณสามารถระบุทิศทางและองศาการหมุนได้หลายวิธี ดังนี้

  • ใช้ Pitch, Yaw และ Roll ซึ่งจะระบุการหมุนรอบแกน x, y และ z ตามลำดับ
  • ใช้ axisAngle ซึ่งเป็น Vector3 ที่แสดงแกนการหมุนและองศาที่ควรหมุนรอบแกน
  • ใช้ Quaternion ที่แสดงการหมุน

rotateToLookAtUser

ตัวปรับแต่ง rotateToLookAtUser จะหมุน เนื้อหาอย่างต่อเนื่องเพื่อให้หันหน้าเข้าหาผู้ใช้ตลอดเวลา นอกจากนี้ คุณยังใช้ตัวปรับแต่งนี้เพื่อให้ได้เอฟเฟกต์ "ป้ายโฆษณา" ซึ่งเนื้อหาจะหมุนเพื่อหันหน้าเข้าหาผู้ใช้บนแกน Y ในขณะที่ยังคงตั้งตรงและอยู่ในแนวเดียวกับแรงโน้มถ่วง หากต้องการทำเช่นนี้ ให้รวมตัวปรับแต่ง rotateToLookAtUser กับ ตัวปรับแต่ง gravityAligned

ย้ายและปรับขนาดด้วยคอมโพสได้

อนุญาตให้ผู้ใช้จัดการตำแหน่งและขนาดของออบเจ็กต์ในพื้นที่ 3 มิติได้โดยตรง คุณสามารถเพิ่มตัวปรับแต่งเหล่านี้ลงในคอมโพเนนต์แต่ละรายการ (เช่น SpatialPanel), Subspace และคอมโพเนนต์เลย์เอาต์เชิงพื้นที่ (เช่น SpatialRow หรือ SpatialColumn)

ย้ายองค์ประกอบ

เมื่อมีตัวปรับแต่ง movable และเปิดใช้แล้ว ระบบจะแสดงตัวควบคุม UI ที่ลากได้ซึ่งช่วยให้ผู้ใช้ย้ายองค์ประกอบในพื้นที่ 3 มิติได้ ลักษณะการทำงานที่เฉพาะเจาะจงของการเคลื่อนไหวนี้กำหนดโดย movePolicy ที่ระบุไว้ ดังนี้

  • MovePolicy.default: ระบบจะจัดการการเคลื่อนไหวทั้งหมดโดยอัตโนมัติ รวมถึงคำนวณและใช้ท่าทางและขนาดใหม่ตามข้อมูลที่ผู้ใช้ป้อน
  • MovePolicy.custom: ระบบจะคำนวณท่าทางเป้าหมายตามข้อมูลที่ป้อน แต่จะไม่นำไปใช้กับองค์ประกอบที่เชื่อมโยงโดยอัตโนมัติ ตัวเลือกนี้มีประโยชน์สำหรับการจำกัดการเคลื่อนไหวหรือสร้างการเคลื่อนไหวที่กำหนดเองในแอป

ปรับขนาดองค์ประกอบ

เมื่อมีตัวปรับแต่ง resizable() และเปิดใช้แล้ว ระบบจะแสดงตัวควบคุม UI ที่ช่วยให้ผู้ใช้ปรับขนาดองค์ประกอบในพื้นที่ 3 มิติได้ ลักษณะการทำงานที่เฉพาะเจาะจงของการปรับขนาดกำหนดโดย resizePolicy ที่ระบุไว้ ดังนี้

  • ResizePolicy.default(): ระบบจะจัดการท่าทางการปรับขนาดโดยอัตโนมัติและใช้ขนาดใหม่กับเนื้อหา
  • ResizePolicy.custom(): ระบบจะแสดง SpatialResizeEvent และจะไม่นำ ผลลัพธ์ของการปรับขนาดไปใช้กับองค์ประกอบที่เชื่อมโยงโดยอัตโนมัติ

เปลี่ยนลักษณะที่ปรากฏของคอมโพสได้

alpha

ตัวปรับแต่ง alpha จะกำหนดความทึบขององค์ประกอบและองค์ประกอบย่อย โดย 0f หมายถึงโปร่งใสโดยสมบูรณ์ และ 1.0f หมายถึงทึบโดยสมบูรณ์

scale

ตัวปรับแต่ง scale จะปรับขนาดเนื้อหาของคอมโพสได้ตามแกน นอน แกนตั้ง และแกนลึก

การทดสอบและการช่วยเหลือพิเศษ

semantics

ตัวปรับแต่ง semantics จะเพิ่มความหมายให้กับโหนดเลย์เอาต์เพื่อใช้ในการ ทดสอบและการช่วยเหลือพิเศษ ดู ความหมายใน Jetpack Compose และ SemanticsModifier

testTag

ตัวปรับแต่ง testTag เป็นคำย่อของ SemanticsPropertyReceiver.testTag ซึ่งช่วยให้เฟรมเวิร์กการทดสอบค้นหา องค์ประกอบในการทดสอบได้