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).touchXvà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:
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
translationXcủ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ỷ.