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 hồ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 mà người dùng vuốt.

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

PredictiveBackHandler cung cấp một Flow<BackEventCompat> phát ra các sự kiện biểu thị tiến trình của thao tác quay lại. Mỗi sự kiện chứa thông tin như:

  • progress: Một giá trị số thực 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
        throw e
    }
}

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 một ảnh động tuỳ chỉnh trong ứng dụng bằng cách sử dụng PredictiveBackHandler để tạo một hoạt động tương tác mượt mà với ngăn điều hướng để 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 kéo một cách mượt mà dựa trên vận tốc cử chỉ khi cử chỉ hoàn tất hoặc bị huỷ.