PredictiveBackHandler composable-функция в 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, чтобы плавно открыть или закрыть панель в зависимости от скорости жеста, когда он завершен или отменен.