Чтобы включить интеллектуальную анимацию спины, вы должны подписаться на поддержку прогнозируемого жеста назад. Чтобы принять участие, добавьте android:enableOnBackInvokedCallback="true
" в тег <application>
или отдельные теги <activity>
в файле AndroidManifest.xml
.
Включить системную анимацию по умолчанию
Системные анимации возвращения домой, перекрестных действий и перекрестных задач доступны на устройствах Android 15 и более поздних версий для приложений, которые перешли на поддерживаемые API обратной обработки.
- Back-to-home : возвращает пользователя на главный экран.
- Перекрестная активность : переходы между действиями в приложении.
- Перекрестная задача : переходы между задачами .
Эти анимации включены по умолчанию в 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 и более поздних версиях эта функция включена по умолчанию.
Дополнительные ресурсы
- Добавление кодовой лаборатории предиктивной обратной анимации
- Расширенная анимация макета в создании видео