Android启动屏动画时长设置被忽略,Pixel 6始终为500ms如何修复?
修复Pixel 6启动屏动画时长固定500ms的思路
核对系统版本对应的配置逻辑
- 若设备运行Android 12:确认启动Activity关联的主题中,
android:windowSplashScreenAnimationDuration属性已正确设置(例如android:windowSplashScreenAnimationDuration="1000"),且该主题未被其他优先级更高的主题覆盖。 - 若设备运行Android 13+:检查自定义启动屏图标动画的
objectAnimator文件(如res/anim/splash_icon_anim.xml),确保其中明确配置了android:duration属性,且数值符合预期,同时动画已正确关联到启动屏主题的android:windowSplashScreenAnimation属性。
- 若设备运行Android 12:确认启动Activity关联的主题中,
检查系统动画缩放设置
打开设备开发者选项,查看「窗口动画缩放」「过渡动画缩放」「动画程序时长缩放」三项设置,确认未被调整为小于1x的数值(比如0.5x会将动画时长压缩一半),建议临时设为「1x」测试效果。验证配置是否生效
- 代码层面:在启动Activity中添加调试代码,通过
getTheme().getAttributeInt(R.attr.windowSplashScreenAnimationDuration, -1)获取实际生效的属性值,确认配置的时长是否被正确读取。 - ADB命令验证:执行
adb shell dumpsys activity activities | grep windowSplashScreenAnimationDuration,查看当前应用的该属性值是否符合配置。
- 代码层面:在启动Activity中添加调试代码,通过
排查Jetpack SplashScreen库问题
若使用了Jetpack的SplashScreen库,确保依赖版本为androidx.core:core-splashscreen:1.0.1及以上;同时检查启动Activity中installSplashScreen()的调用时机,避免在动画完成前过早执行页面跳转逻辑,导致动画被强制终止。排除系统层面限制
Pixel设备部分系统版本可能对启动屏动画时长有默认限制,可尝试将配置的时长设为大于500ms的数值(如1000ms)测试,若仍无变化,可考虑更新系统到最新版本后再验证。
内容的提问来源于stack exchange,提问作者Style-7
相关产品推荐
相关产品推荐

