Предиктивная анимация возврата и системная анимация включены по умолчанию. Если ваше приложение перехватывает событие возврата, и вы ещё не перешли на предиктивную анимацию возврата, обновите приложение, чтобы использовать поддерживаемые API обратной навигации.
Включить системные анимации по умолчанию
Системные анимации возврата на главный экран, перекрестной активности и перекрестной задачи доступны на устройствах Android 15 и более поздних версиях для приложений, которые перешли на поддерживаемые API обработки возврата.
- Возврат на главный экран : возвращает пользователя на главный экран.
- Перекрестная активность : переходы между действиями внутри приложения.
- Перекрестные задачи : переходы между задачами .
Эти анимации включены по умолчанию на устройствах Android 15 и более поздних версиях. На устройствах под управлением Android 13 или 14 пользователи могут включить их в разделе «Параметры разработчика» .
Чтобы получить системные анимации, обновите зависимость AndroidX Activity
до версии 1.6.0 или выше.
Включить предиктивный возврат с помощью Navigation Compose
Чтобы использовать предиктивный возврат в Navigation Compose, убедитесь, что вы используете библиотеку navigation-compose
версии 2.8.0 или выше.
Навигация Compose автоматически переключается между экранами, когда пользователь проводит пальцем назад:
При навигации вы можете создавать пользовательские переходы с помощью модификаторов popEnterTransition
и popExitTransition
. При применении к NavHost
эти модификаторы позволяют задать анимацию экранов входа и выхода. С их помощью можно создавать различные эффекты, такие как масштабирование, затухание или скольжение.
В этом примере scaleOut
используется в popExitTransition
для уменьшения масштаба экрана при выходе из него при возвращении пользователя обратно. Кроме того, параметр transformOrigin
определяет точку, вокруг которой происходит анимация масштабирования. По умолчанию это центр экрана ( 0.5f, 0.5f
). Вы можете изменить это значение, чтобы масштабирование начиналось с другой точки.
NavHost( navController = navController, startDestination = Home, popExitTransition = { scaleOut( targetScale = 0.9f, transformOrigin = TransformOrigin(pivotFractionX = 0.5f, pivotFractionY = 0.5f) ) }, popEnterTransition = { EnterTransition.None }, modifier = modifier, )
Этот код дает следующий результат:
popEnterTransition
и popExitTransition
управляют анимацией при открытии стека «назад», например, жестом «назад». С помощью enterTransition
и exitTransition
можно также определить анимацию входа и выхода из составных элементов в целом, а не только для предиктивного перехода «назад». Если задать только enterTransition
и exitTransition
, они будут использоваться как для обычной навигации, так и для открытия стека «назад». Однако использование popEnterTransition
и popExitTransition
позволяет создавать отдельные анимации для навигации «назад».
Интеграция с общими переходами элементов
Переходы общих элементов обеспечивают плавную визуальную связь между компонуемыми элементами с общим содержимым, часто используемым для навигации.
Чтобы использовать общие элементы с Navigation Compose, см. раздел Предиктивный возврат с общими элементами .
Поддержка предиктивного возврата с помощью компонентов Material Compose
Многие компоненты библиотеки Material Compose разработаны для бесперебойной работы с предиктивными жестами движения назад. Чтобы включить предиктивную анимацию движения назад в этих компонентах, включите в свой проект последнюю версию зависимости Material3 ( androidx.compose.material3:material3-*:1.3.0
или выше).
Компоненты Material, поддерживающие предиктивную обратную анимацию, включают в себя:
-
SearchBar
-
ModalBottomSheet
-
ModalDrawerSheet/DismissibleDrawerSheet
-
ModalNavigationDrawer/DismissibleNavigationDrawer
SearchBar
и ModalBottomSheet
автоматически анимируются с помощью предиктивных жестов «Назад». ModalNavigationDrawer
, ModalDrawerSheet
, DismissibleDrawerSheet
и DismissibleNavigationDrawer
требуют передачи drawerState
соответствующим компонуемым элементам содержимого листа.
Протестируйте анимацию предиктивного жеста «Назад»
Если вы все еще используете Android 13 или Android 14, вы можете протестировать анимацию возврата на главный экран.
Чтобы протестировать эту анимацию, выполните следующие действия:
- На вашем устройстве перейдите в раздел Настройки > Система > Параметры разработчика .
- Выберите Предиктивная анимация возврата .
- Запустите обновленное приложение и используйте жест «назад», чтобы увидеть его в действии.
В Android 15 и более поздних версиях эта функция включена по умолчанию.
Дополнительные ресурсы
- Добавление предиктивной обратной анимации в лабораторную работу
- Расширенные возможности анимации макета в Compose video