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