Implement synchronized app transitions

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.

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.