Компонуемый элемент 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 throw e } }
Пример: интеграция с панелью навигации
В этом примере показано, как реализовать собственную анимацию в приложении с помощью PredictiveBackHandler, чтобы создать плавное взаимодействие с панелью навигации в ответ на жесты назад в JetLagged:
В этом примере PredictiveBackHandler используется для следующих целей:
- Отслеживает прогресс выполнения жеста "Назад".
- Обновление
translationXпанели на основе прогресса жеста. - Используйте
velocityTracker, чтобы плавно открывать или закрывать выдвигающуюся панель в зависимости от скорости жеста, когда он завершен или отменен.