Android中windowSplashScreenAnimationDuration参数的作用是什么?
windowSplashScreenAnimationDuration参数实际作用
该参数不控制启动屏总展示时长,也不控制自定义动画drawable的播放时长,唯一作用是定义Android系统内置的闪屏退出动画(启动屏向App首页过渡时,图标收缩、背景淡出的过渡动画)的最大时长,取值上限为1000ms,超过该值系统会自动截断为1000ms。
异常现象原因说明
- 配置为1000ms仍出现展示时长更短的情况:启动屏总展示时长由两个条件的最晚触发时间决定:① App第一帧内容完成绘制的时间 ②
setKeepOnScreenCondition设置的持屏条件返回false的时间。两个条件都满足后,系统才会开始播放退出动画,总展示时长 = 持屏等待时间 + 退出动画时长。如果App首帧加载完成的时间超过你设置的动画时长,系统会直接结束闪屏、跳过退出动画,此时总展示时长等于首帧加载耗时,会出现短于1000ms的情况。 - 配置为100ms反而展示时长更长的情况:如果App首帧加载耗时较长(比如1000ms),总展示时长为1000ms + 100ms = 1100ms,比首帧耗时800ms、配置1000ms动画时长时跳过动画的800ms总时长更长,就会出现短参数反而总时长更长的现象。
- XML格式drawable动画不受该参数影响:自定义animated drawable作为闪屏图标时,动画的播放逻辑完全由drawable内部的duration配置控制,和系统退出动画参数无关,
windowSplashScreenAnimationDuration不会修改自定义drawable的任何时间配置。
正确使用方式
- 控制闪屏总展示时长不要使用
windowSplashScreenAnimationDuration,调用闪屏实例的setKeepOnScreenCondition方法自定义持屏逻辑即可,示例:
// 强制闪屏至少展示1500ms val launchTime = System.currentTimeMillis() splashScreen.setKeepOnScreenCondition { System.currentTimeMillis() - launchTime < 1500 }
- 自定义动画drawable作为闪屏图标时,直接在XML的animation-list中配置每个item的duration即可,总动画时长建议和持屏时长匹配,避免动画未播放完成闪屏就退出。
windowSplashScreenAnimationDuration仅用于调整退出过渡动画的快慢,无特殊需求保持默认值即可。- 部分国内定制ROM对系统闪屏API做了修改,可能出现参数不生效的情况,这类场景需要单独适配对应厂商的闪屏规范。
内容的提问来源于stack exchange,提问作者Michael Bolboceanu
相关产品推荐
相关产品推荐

