Synchronized App Transitions is a feature in Android 9 that enhances the existing app transition architecture. When a user opens, closes, or switches between apps, the SystemUI or Launcher (homescreen) process sends a request to control the animation frame-by-frame with guaranteed synchronization between view animations and window animations. When the SystemUI or Launcher draws a new frame as part of an animation, it requests a different transform on the animating app surface that determines how the app is composed on the screen, and marks the request, a surface transaction, to be synchronized with the frame it's currently drawing.
This allows for new app transition animations that are not possible on Android 8.x and lower. For example, the app launch animation can transform homescreen icons seamlessly into the app surface and the notification launch animation can transform notifications into the app surface.
Examples and source
See the following references for this feature.
ActivityOptions.makeRemoteAnimation
RemoteAnimationAdapter
RemoteAnimationRunner
Activity.registerRemoteAnimations
For a reference implementation for the notification launch animation, see
ActivityLaunchAnimator.kt
.
Implementation
You can implement this feature on Launcher/System UI as required or you can use the AOSP implementation in SystemUI/Launcher3.
Validation
To validate the performance of the animations, measure the performance of the controlling app, i.e. SystemUI or Launcher, during the animations as described in Test UI performance.