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