AnimatedVectorDrawable 作为 Window 背景。可能吗?

AnimatedVectorDrawable as Window background. Is it possible?

我正在尝试将 AnimatedVectorDrawable 用作放置在 window 背景中的启动动画。我用的是https://developer.android.com/reference/android/graphics/drawable/AnimatedVectorDrawable.html中官方给出的例子。它出现但没有动画。

Window 背景中的动画是否可行?

您第一次打开应用程序(冷启动)时看到的第一个屏幕是由 WindowManager 创建的屏幕占位符。它通过获取您在主题上设置的资源来创建占位符,例如 window 背景和状态栏颜色。要启动 window 背景的动画,您必须调用它的 start() 方法,但是 WindowManager 是您几乎无法控制的系统服务。所以在应用程序初始化的这个阶段,除非有一些模糊的方法来控制 Application.onCreate() 方法中的 WindowManager,否则不可能为矢量背景设置动画。

我从冷启动打开了很多我的应用程序,包括 Google 个应用程序,但似乎没有一个应用程序在冷启动阶段实现动画(如 Material 设计的文档暗示可能) .很少有人在主activity.

的onCreate冷启动后制作动画

如果在冷启动后启动动画没有问题,例如将徽标移动到屏幕顶部的情况,您可以:

  1. 在 AndroidManifest.xml
  2. 中启动 activity 时将属性为 android:windowBackground 的主题设置为静态可绘制对象
  3. 在 Activity 中调用 super.onCreate() 之前,将主题更改为默认主题。
  4. 使用 AnimatedVectorDrawable 的 ImageView 在静态 window 背景矢量的相同位置设置内容视图。
  5. 调用 AnimatedVectorDrawable 的 start() 方法。

这是一个AndroidDeveloper's post explaining in details how to deal with application themes for launch screens