Настроить интеллектуальную обратную связь

Предиктивные возвраты и системные анимации включены по умолчанию. Если ваше приложение перехватывает событие возврата, и вы не перешли на предиктивный возврат, обновите свое приложение, чтобы использовать поддерживаемые API обратной навигации

Предиктивная анимация возвращения домой.
Предиктивная анимация перекрестной активности.
Предиктивная анимация перекрестных задач.

Включить системную анимацию по умолчанию

Системные анимации возврата домой, перекрестной активности и перекрестных задач доступны на устройствах Android 15 и более поздних версий для приложений, которые перешли на поддерживаемые API обработки возврата.

  • Вернуться домой : возвращает пользователя на главный экран.
  • Перекрестная активность : переходы между действиями в приложении.
  • Перекрестные задачи : переходы между задачами .

Эти анимации включены по умолчанию на Android 15 и выше. На устройствах под управлением Android 13 или 14 пользователи могут включить их через параметры разработчика .

Чтобы получить системные анимации, обновите зависимость AndroidX Activity до версии 1.6.0 или выше.

Включить предиктивный возврат с помощью Navigation Compose

Чтобы использовать предиктивный возврат в Navigation Compose, убедитесь, что вы используете библиотеку navigation-compose 2.8.0 или выше.

Навигация Compose автоматически переходит между экранами, когда пользователь проводит пальцем назад:

Рисунок 2. Анимация кроссфейда по умолчанию в приложении Socialite.

При навигации вы можете создавать пользовательские переходы с помощью 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,
)

Этот код дает следующий результат:

Рисунок 3. Пользовательская анимация внутри приложения в Socialite.

popEnterTransition и popExitTransition специально управляют анимацией при выталкивании стека назад, например, жестом назад. Вы также можете использовать enterTransition и exitTransition для определения анимации для входа и выхода из составных элементов в целом, а не только для предиктивного возврата. Если вы зададите только enterTransition и exitTransition , они будут использоваться как для обычной навигации, так и для выталкивания стека назад. Однако использование popEnterTransition и popExitTransition позволяет вам создавать отдельные анимации для обратной навигации.

Интеграция с общими переходами элементов

Переходы общих элементов обеспечивают плавную визуальную связь между компонуемыми элементами с общим содержимым, часто используемым для навигации.

Рисунок 4. Переход к общему элементу с предиктивным возвратом в Navigation Compose.

Чтобы использовать общие элементы с Navigation Compose, см. раздел Предиктивный возврат с общими элементами .

Поддержка предиктивного возврата с компонентами Material Compose

Многие компоненты в библиотеке Material Compose разработаны для бесперебойной работы с предиктивными жестами назад. Чтобы включить предиктивные анимации назад в этих компонентах, включите последнюю зависимость Material3 ( androidx.compose.material3:material3-*:1.3.0 или выше) в свой проект.

Компоненты Material, поддерживающие предиктивную обратную анимацию, включают:

SearchBar и ModalBottomSheet автоматически анимируются с помощью предиктивных жестов «назад». ModalNavigationDrawer , ModalDrawerSheet , DismissibleDrawerSheet и DismissibleNavigationDrawer требуют, чтобы вы передали drawerState в соответствующие им компонуемые элементы содержимого листа.

Протестируйте анимацию предиктивного жеста «назад»

Если вы все еще используете Android 13 или Android 14, вы можете протестировать анимацию возврата на домашний экран.

Чтобы протестировать эту анимацию, выполните следующие действия:

  1. На вашем устройстве перейдите в раздел «Настройки» > «Система» > «Параметры разработчика» .
  2. Выберите Предиктивная анимация возврата .
  3. Запустите обновленное приложение и используйте жест «Назад», чтобы увидеть его в действии.

В Android 15 и более поздних версиях эта функция включена по умолчанию.

Дополнительные ресурсы