同步应用过渡是 Android 9 中的一项功能,可增强现有的应用过渡架构。当用户打开、关闭应用或在应用之间切换时,SystemUI 或启动器(主屏幕)进程会发送请求来逐帧控制动画,并保证视图动画和窗口动画之间同步。当 SystemUI 或启动器绘制作为动画一部分的新帧时,它会请求在动画应用 Surface 上进行不同的变换,以确定应用在屏幕上的合成方式,并将该请求(Surface 事务)标记为与当前绘制的帧同步。
这允许实现 Android 8.x 及更低版本上不可能实现的新应用过渡动画。例如,应用启动动画可以将主屏幕图标无缝转换为应用 Surface,通知启动动画可以将通知转换为应用 Surface。
示例和源代码
请参阅以下参考资料了解此功能。
ActivityOptions.makeRemoteAnimation
RemoteAnimationAdapter
RemoteAnimationRunner
Activity.registerRemoteAnimations
有关通知启动动画的参考实现,请参阅ActivityLaunchAnimator.kt
。
实现
您可以根据需要在启动器/System UI 上实现此功能,或者您可以使用 SystemUI/Launcher3 中的 AOSP 实现。
验证
要验证动画的性能,请按照测试界面性能中所述,在动画期间测量控制应用(即 SystemUI 或启动器)的性能。