Truy cập tiến trình theo cách thủ công

Thành phần kết hợp PredictiveBackHandler trong Jetpack Compose cho phép bạn chặn cử chỉ quay lại và truy cập vào tiến trình của cử chỉ đó. Bạn có thể phản ứng với cử chỉ quay lại của người dùng theo thời gian thực, tạo ảnh động hoặc hành vi tuỳ chỉnh dựa trên khoảng cách người dùng vuốt.

Để sử dụng PredictiveBackHandler, hãy đảm bảo bạn đang sử dụng androidx.activity:activity:1.6.0 trở lên.

PredictiveBackHandler cung cấp Flow<BackEventCompat> phát ra các sự kiện đại diện cho tiến trình của cử chỉ quay lại. Mỗi sự kiện chứa thông tin như:

  • progress: Giá trị số thực dấu phẩy động từ 0 đến 1 cho biết tiến trình của cử chỉ quay lại (0 = cử chỉ bắt đầu, 1 = cử chỉ hoàn tất).
  • touchXtouchY: Toạ độ X và Y của sự kiện chạm.

Đoạn mã sau đây cho thấy cách sử dụng cơ bản của 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
    }
}

Ví dụ: Tích hợp với ngăn điều hướng

Ví dụ này minh hoạ cách triển khai ảnh động tuỳ chỉnh trong ứng dụng bằng PredictiveBackHandler để tạo tương tác mượt mà với ngăn điều hướng nhằm phản hồi các cử chỉ quay lại trong JetLagged:

Hình 5. Ngăn điều hướng có hỗ trợ tính năng xem trước thao tác quay lại.

Trong ví dụ này, PredictiveBackHandler được dùng để:

  • Theo dõi tiến trình của cử chỉ quay lại.
  • Cập nhật translationX của ngăn dựa trên tiến trình cử chỉ.
  • Sử dụng velocityTracker để mở hoặc đóng ngăn một cách mượt mà dựa trên tốc độ cử chỉ khi cử chỉ hoàn tất hoặc bị huỷ.