【问题标题】:AnimatedVectorDrawable as Window background. Is it possible?AnimatedVectorDrawable 作为窗口背景。可能吗?
【发布时间】:2017-08-09 20:59:15
【问题描述】:
【问题讨论】:
标签:
android
animation
android-vectordrawable
animatedvectordrawable
【解决方案1】:
您第一次打开应用程序(冷启动)时看到的第一个屏幕是由WindowManager 创建的屏幕占位符。它通过获取您在主题上设置的资源来创建占位符,例如窗口背景和状态栏颜色。要启动窗口背景的动画,您必须调用其start() 方法,但WindowManager 是您几乎无法控制的系统服务。所以在应用程序初始化的这个阶段,除非在Application.onCreate()方法中有一些晦涩的方法来控制WindowManager,否则不可能为矢量背景设置动画。
我从冷启动打开了很多我的应用程序,包括 Google 的应用程序,但似乎没有一个应用程序在冷启动阶段实现动画(就像 Material Design 的文档暗示可能的那样)。极少数在主Activity的onCreate冷启动后制作动画。
如果在他冷启动后启动动画没有问题,例如将徽标移动到屏幕顶部,您可以:
- 在 AndroidManifest.xml 中的启动活动中为静态可绘制对象设置一个带有
android:windowBackground 属性的主题
- 在 Activity 中调用 super.onCreate() 之前,将主题更改为默认主题。
- 使用 AnimatedVectorDrawable 的 ImageView 在静态窗口背景矢量的相同位置设置内容视图。
- 调用 AnimatedVectorDrawable 的
start() 方法。
这是AndroidDeveloper's post explaining in details how to deal with application themes for launch screens