Анимация «Назад» и системная анимация включены по умолчанию. Если ваше приложение перехватывает событие «Назад», и вы еще не перешли на анимацию «Назад», обновите приложение, чтобы использовать поддерживаемые API навигации «Назад».
Включить анимацию системы по умолчанию
Системные анимации возврата на главный экран, а также анимации для разных активностей и задач доступны на устройствах с Android 15 и более поздних версий для приложений, которые перешли на поддерживаемые API для возврата.
- Вернуться на главный экран : возвращает пользователя на главный экран.
- Межфункциональное взаимодействие : Переходы между различными видами деятельности внутри приложения.
- Межзадачность : Переходы между задачами .
Эти анимации включены по умолчанию в Android 15 и выше. На устройствах под управлением Android 13 или 14 пользователи могут включить их через параметры разработчика .
Чтобы включить системную анимацию, обновите зависимость AndroidX Activity до версии 1.6.0 или выше.
Включите функцию предиктивного возврата при создании навигации.
Чтобы использовать функцию предиктивного перехода назад в Navigation Compose, убедитесь, что вы используете библиотеку navigation-compose версии 2.8.0 или выше.
Функция Navigation 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 Design, поддерживающие анимацию возврата, включают в себя:
-
SearchBar -
ModalBottomSheet -
ModalDrawerSheet/DismissibleDrawerSheet -
ModalNavigationDrawer/DismissibleNavigationDrawer
SearchBar и ModalBottomSheet автоматически анимируются при нажатии на кнопку "Назад". ModalNavigationDrawer , ModalDrawerSheet , DismissibleDrawerSheet и DismissibleNavigationDrawer требуют передачи параметра drawerState соответствующим компонентам содержимого листа.
Протестируйте анимацию предиктивного жеста «назад».
Если вы все еще используете Android 13 или Android 14, вы можете протестировать анимацию возврата на главный экран.
Чтобы протестировать эту анимацию, выполните следующие шаги:
- На вашем устройстве перейдите в Настройки > Система > Параметры разработчика .
- Выберите «Предиктивная анимация спины» .
- Запустите обновлённое приложение и используйте жест «назад», чтобы увидеть его в действии.
В Android 15 и более поздних версиях эта функция включена по умолчанию.
Дополнительные ресурсы
- Добавить анимацию спины с функцией прогнозирования (codelab)
- Расширенные возможности анимации макета в Compose video