【Android】Launcher 同步动画开发

实现同步应用转换

同步应用转换是 Android 9 中的一项功能,可以改进现有的应用转换架构。当用户打开、关闭应用或在应用之间切换时,SystemUI 或启动器(主屏幕)进程会发送逐帧控制动画的请求,同时保证在视图动画和窗口动画之间进行同步。SystemUI 或启动器在动画过程中绘制新帧时,会在动画应用表面请求一个不同的转换,此转换可以确定应用在屏幕上的组成形式,并标记要与 SystemUI 或启动器目前正在绘制的帧同步的请求(表面事务)。

此过程可以实现无法在 Android 8.x 及更低版本中实现的新应用转换动画。例如,应用启动动画可以将主屏幕图标无缝转换为应用 Surface,并且通知启动动画可以将通知转换为应用 Surface。

示例和来源

请参阅以下参考来了解这项功能。

有关通知启动动画的参考实现,请参阅 ActivityLaunchAnimator.kt

1,实例开发

阅读源码解释:

android.view public class RemoteAnimationAdapter
extends Object
implements Parcelable
描述如何运行远程动画的对象。
远程动画让另一个应用程序控制整个应用程序过渡。 它这样做
使用ActivityOptions.makeRemoteAnimation
使用IWindowManager.overridePendingAppTransitionRemote
注册一个描述动画应该如何运行的RemoteAnimationAdapter :沿着一些元数据,这个对象包含一个回调,当过渡准备好开始时,它从窗口管理器中调用。
窗口管理器将RemoteAnimationTarget列表提供给回调。 每个目标都包含有关正在设置动画的活动以及RemoteAnimationTarget.leash 。 控制应用程序可以像任何其他SurfaceControl一样修改皮带,包括使用SurfaceControl.Transaction.deferTransactionUntil与要绘制的框架同步更新皮带的表面属性的可能性。
当动画完成后,控制应用程序可以调用IRemoteAnimationFinishedCallback是被供应到IRemoteAnimationRunner.onStartAnimation

这应该是控制动画行为的adapter;

(未完待续。。。)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值