Синхронизированные переходы между приложениями — это функция Android 9, улучшающая существующую архитектуру переходов между приложениями. Когда пользователь открывает, закрывает или переключается между приложениями, процесс SystemUI или Launcher (домашний экран) отправляет запрос на покадровое управление анимацией с гарантированной синхронизацией между анимацией просмотра и анимацией окна. Когда SystemUI или Launcher рисует новый кадр как часть анимации, он запрашивает другое преобразование на анимирующей поверхности приложения, которое определяет, как приложение компонуется на экране, и помечает запрос, поверхностную транзакцию, для синхронизации с кадр, который он сейчас рисует.
Это позволяет использовать новую анимацию перехода между приложениями, которая невозможна в Android 8.x и более ранних версиях. Например, анимация запуска приложения может плавно преобразовывать значки домашнего экрана в поверхность приложения, а анимация запуска уведомлений может преобразовывать уведомления в поверхность приложения.
Примеры и источник
См. следующие ссылки для этой функции.
-
ActivityOptions.makeRemoteAnimation
-
RemoteAnimationAdapter
-
RemoteAnimationRunner
-
Activity.registerRemoteAnimations
Пример реализации анимации запуска уведомлений см. в ActivityLaunchAnimator.kt
.
Реализация
Вы можете реализовать эту функцию в Launcher/System UI по мере необходимости или использовать реализацию AOSP в SystemUI/Launcher3.
Проверка
Чтобы проверить производительность анимации, измерьте производительность управляющего приложения, т. е. SystemUI или Launcher, во время анимации, как описано в разделе Проверка производительности пользовательского интерфейса .