เข้าถึงความคืบหน้าด้วยตนเอง

คอมโพสิชัน PredictiveBackHandler ใน Jetpack Compose ช่วยให้คุณขัดจังหวะท่าทางสัมผัสเพื่อย้อนกลับและเข้าถึงความคืบหน้าของท่าทางสัมผัสดังกล่าวได้ คุณสามารถตอบสนองต่อท่าทางสัมผัสของผู้ใช้ในการเลื่อนกลับแบบเรียลไทม์ โดยสร้างภาพเคลื่อนไหวหรือลักษณะการทำงานที่กำหนดเองตามระยะการปัดของผู้ใช้

หากต้องการใช้ PredictiveBackHandler โปรดตรวจสอบว่าคุณใช้ androidx.activity:activity:1.6.0 ขึ้นไป

PredictiveBackHandler มี Flow<BackEventCompat> ที่ส่งเหตุการณ์ซึ่งแสดงถึงความคืบหน้าของท่าทางสัมผัสเพื่อย้อนกลับ แต่ละเหตุการณ์จะมีข้อมูลต่อไปนี้

  • progress: ค่าแบบลอยระหว่าง 0 ถึง 1 ที่ระบุความคืบหน้าของท่าทางสัมผัสย้อนกลับ (0 = เริ่มท่าทางสัมผัส 1 = ท่าทางสัมผัสเสร็จสมบูรณ์)
  • touchX และ touchY: พิกัด X และ Y ของเหตุการณ์การสัมผัส

ข้อมูลโค้ดต่อไปนี้แสดงการใช้งานพื้นฐานของ PredictiveBackHandler

PredictiveBackHandler(true) { progress: Flow<BackEventCompat> ->
    // code for gesture back started
    try {
        progress.collect { backEvent ->
            // code for progress
            boxScale = 1F - (1F * backEvent.progress)
        }
        // code for completion
        boxScale = 0F
    } catch (e: CancellationException) {
        // code for cancellation
        boxScale = 1F
    }
}

ตัวอย่าง: ผสานรวมกับลิ้นชักการนำทาง

ตัวอย่างนี้แสดงวิธีใช้ภาพเคลื่อนไหวในแอปที่กําหนดเองโดยใช้ PredictiveBackHandler เพื่อสร้างการโต้ตอบที่ราบรื่นกับลิ้นชักการนําทางเพื่อตอบสนองต่อท่าทางสัมผัส "กลับ" ใน JetLagged

รูปที่ 5 ลิ้นชักการนำทางที่รองรับการย้อนกลับที่คาดการณ์

ในตัวอย่างนี้ PredictiveBackHandler ใช้เพื่อดำเนินการต่อไปนี้

  • ติดตามความคืบหน้าของท่าทางสัมผัสการย้อนกลับ
  • อัปเดต translationX ของลิ้นชักตามความคืบหน้าของท่าทางสัมผัส
  • ใช้ velocityTracker เพื่อเปิดหรือปิดลิ้นชักอย่างราบรื่นตามความเร็วของท่าทางสัมผัสเมื่อท่าทางสัมผัสเสร็จสมบูรณ์หรือถูกยกเลิก