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 vuốt của người dùng.

Để 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 thể hiện tiến trình của cử chỉ quay lại. Mỗi sự kiện chứa thông tin chẳng hạn như:

  • progress: 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).
  • touchX và touchY: 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 ảnh động tuỳ chỉnh trong ứng dụng bằng cách sử dụng PredictiveBackHandler để tạo ra một hoạt động tương tác mượt mà với ngăn điều hướng nhằm phản hồi cử chỉ quay lại trong JetLagged:

Hình 5. Ngăn điều hướng có hỗ trợ 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ủa 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ỷ.