อุปกรณ์ XR ที่รองรับ
คำแนะนำนี้จะช่วยคุณสร้างประสบการณ์การใช้งานสำหรับอุปกรณ์ XR ประเภทต่างๆ
ตัวปรับเปลี่ยน onIndirectPointerGesture ช่วยให้คอมโพเนนต์รับและตอบสนอง
ต่อเหตุการณ์ตัวชี้ระดับสูงแบบอ้อมได้ เช่น เหตุการณ์ที่มาจากทัชแพด
ของอุปกรณ์ ใช้ตัวปรับเปลี่ยนนี้เพื่อบันทึกและประมวลผลท่าทางสัมผัสที่มาจากทัชแพดหรือแหล่งที่มาที่คล้ายกัน
แพลตฟอร์ม API
แอปของคุณสามารถใช้การเรียกกลับ 4 รายการต่อไปนี้เพื่อควบคุมการจัดการ
onClick: ทริกเกอร์เมื่อแตะหรือคลิกสำเร็จโดยไม่มีการเคลื่อนไหวในแนวนอนอย่างมีนัยสำคัญonSwipeForward: ทริกเกอร์เมื่อการปัดในแนวนอนเกินเกณฑ์ระยะทางและความเร็วในทิศทางไปข้างหน้าonSwipeBackward: ทริกเกอร์เมื่อการปัดในแนวนอนเกินเกณฑ์ระยะทางและความเร็วในทิศทางย้อนกลับEnabled: เมื่อตั้งค่าเป็นfalseระบบจะละเว้นตัวปรับเปลี่ยนและไม่เรียกใช้การเรียกกลับ
ลักษณะการทำงานของระบบสำหรับการปัดและการเลื่อน
ระบบใช้เกณฑ์ระยะทางต่ำสุดในการสัมผัสเพื่อแยกความแตกต่างระหว่างการคลิกและการปัด
- หากตัวชี้เคลื่อนที่อย่างมีนัยสำคัญในระหว่างสถานะลง
onClickจะถูกยกเลิก - หากตัวชี้เคลื่อนที่ย้อนกลับอย่างมีนัยสำคัญในระหว่างการเคลื่อนไหว ท่าทางสัมผัสแบบปัดจะถือว่าไม่ถูกต้อง
ตัวอย่าง: ตั้งค่าการจัดการสำหรับการปัดและการคลิกในคอมโพเนนต์
โค้ดต่อไปนี้จะตั้งค่าการจัดการสำหรับการปัดและการคลิกใน Box ที่โฟกัสได้
@Composable fun OnIndirectPointerGestureSample() { var lastGesture by remember { mutableStateOf("None") } Box( modifier = Modifier.fillMaxSize() .onIndirectPointerGesture( enabled = true, onSwipeForward = { lastGesture = "Forward" }, onSwipeBackward = { lastGesture = "Backward" }, onClick = { lastGesture = "Click" }, ) .focusTarget(), contentAlignment = Alignment.Center, ) { Text("Last Gesture: $lastGesture") } }
ประเด็นสำคัญเกี่ยวกับโค้ด
onIndirectPointerGestureต้องใช้การโฟกัส ดังนั้นจึงมีการใช้focusTargetเพื่อทำให้Boxโฟกัสได้ด้วย คุณสามารถใช้focusTargetหรือตัวปรับเปลี่ยนอื่นๆ ที่เปิดใช้การโฟกัส เช่นsurfaceหากไม่มีการโฟกัส ตัวปรับเปลี่ยนจะไม่สามารถดำเนินการกับเหตุการณ์ตัวชี้แบบอ้อมได้- ตัวอย่างนี้ใช้ทั้งการเรียกกลับ
onSwipeForwardและonClickดังนั้นระบบจะสกัดกั้นและใช้ท่าทางสัมผัสแบบปัดและคลิกที่ตรวจพบ และจะไม่ส่งต่อไปยังคอนเทนเนอร์ระดับบน อย่างไรก็ตาม คุณยังสามารถปล่อยให้การเรียกกลับที่เฉพาะเจาะจงเป็น Null เพื่อส่งท่าทางสัมผัสผ่านไปยังตัวปรับเปลี่ยนonIndirectPointerGestureในคอนเทนเนอร์ระดับบนได้