Android原生启动屏异常:API31无图标、API12图标过小等问题
Android原生启动屏问题解答
API31模拟器首次启动无图标问题
这是Android Studio针对API31的构建缓存bug,首次部署时系统未正确加载layer-list内的资源文件。解决方式:
- 执行命令清理构建缓存:
./gradlew cleanBuildCache - 或者在Run配置里勾选「Disable APK Signature Verification」(仅调试场景用)
- 手动删除项目根目录下的
.gradle/caches文件夹后重新构建
Android 12及以下版本图标过小问题
小图标来源
Android 12以下系统会默认提取你的应用启动图标(ic_launcher系列资源)作为启动屏中心图标,而非你launch_background.xml里指定的splash资源——旧版本启动屏逻辑会优先使用系统预设的应用图标,忽略自定义bitmap的尺寸设置。
尺寸调整方案
- 分版本适配启动屏:
- Android 12+:使用新SplashScreen API,在
values-v31/styles.xml中配置android:windowSplashScreenAnimatedIcon、android:windowSplashScreenBackground等属性,直接指定图标和背景 - Android 11及以下:修改
launch_background.xml,给包含图标的<item>添加固定宽高属性,示例:<item android:width="200dp" android:height="200dp"> <bitmap android:gravity="center" android:src="@drawable/splash"/> </item>
- Android 12+:使用新SplashScreen API,在
- 确保
splash资源做了多分辨率适配,在drawable-mdpi、drawable-hdpi等目录下放对应尺寸的图片,避免缩放异常
Android 11真机出现底部Branding的疑问
你看到的不是Android 12新增的BrandImage特性,而是launch_background.xml里底部的<bitmap android:gravity="bottom" android:src="@drawable/branding"/>元素——旧版本系统会完整加载整个layer-list布局,包含所有item,所以这个底部资源会正常显示,和Android 12的BrandImage无关。
内容的提问来源于stack exchange,提问作者guguCara
相关产品推荐
相关产品推荐

