Компонуемый компонент 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
для плавного открытия или закрытия ящика в зависимости от скорости жеста при его завершении или отмене.