同期アプリの切り替えは Android 9 の機能で、既存のアプリの移行アーキテクチャを強化します。ユーザーがアプリを開く、閉じる、またはアプリ間での切り替えを行うと、SystemUI またはランチャー(ホーム画面)のプロセスは、ビュー アニメーションとウィンドウ アニメーションの同期を確保して、フレームごとにアニメーションを制御するリクエストを送信します。SystemUI またはランチャーがアニメーションの一環として新しいフレームを描画すると、画面上でのアプリの構成方法を決定するアニメーション アプリのサーフェスに別の変換をリクエストし、現在描画しているフレームに同期されるように、サーフェスのトランザクションのリクエストにマークを付けます。
これにより、Android 8.x 以前では不可能な、新しいアプリの遷移アニメーションが可能になります。たとえば、アプリの起動アニメーションは、ホーム画面のアイコンをアプリのサーフェスにシームレスに移行でき、通知の起動アニメーションは、通知をアプリのサーフェスに移行できます。
例とソース
この機能については、次のリファレンスをご覧ください。
ActivityOptions.makeRemoteAnimation
RemoteAnimationAdapter
RemoteAnimationRunner
Activity.registerRemoteAnimations
通知の起動アニメーションのリファレンス実装については、ActivityLaunchAnimator.kt
をご覧ください。
実装
必要に応じてランチャーやシステム UI にこの機能を実装するか、SystemUI や Launcher3 で AOSP 実装を使用できます。
検証
アニメーションのパフォーマンスを検証するには、テスト UI のパフォーマンスで説明されているように、アニメーション中に、SystemUI やランチャーなどの制御アプリのパフォーマンスを測定します。