AnimatedVectorDrawable作为窗口背景。可能吗?

Win*_*der 5 animation android android-vectordrawable animatedvectordrawable

我试图AnimatedVectorDrawable用作放置在窗口背景中的启动动画。我使用https://developer.android.com/reference/android/graphics/drawable/AnimatedVectorDrawable.html中给出的官方示例。它出现但没有动画。

Window可以在后台进行动画吗?

All*_*oso 6

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

我从冷启动中打开了很多应用程序,包括谷歌的应用程序,但似乎没有一个应用程序在冷启动阶段实现动画(就像 Material Design 的文档所暗示的那样)。很少有人在主活动的 onCreate 冷启动后制作动画。

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

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

这是一篇AndroidDeveloper 的帖子,详细解释了如何处理启动屏幕的应用程序主题