Предиктивные возвраты и системные анимации включены по умолчанию. Если ваше приложение перехватывает событие возврата, и вы не перешли на предиктивный возврат, обновите свое приложение, чтобы использовать поддерживаемые 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 и более поздних версиях эта функция включена по умолчанию.
Дополнительные ресурсы
- Добавить предиктивную обратную анимацию codelab
- Расширенные возможности анимации макета в Compose video