Ionic Cordova迁移至Android12+:多尺寸启动屏配置方法问询
Ionic Cordova迁移到Android 12(API 32):多尺寸启动屏配置方案
问题背景
将Ionic Cordova应用迁移至Android 12(API 32)时,原有的<splash>标签已不再生效,需改用<preference name="AndroidWindowSplashScreenAnimatedIcon" value="path to xml/png" />配置启动屏。此前通过cordova-res生成了多尺寸的<splash>标签配置(如下),现需转换为新的配置方式实现多尺寸适配:
<splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" /> <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" /> <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" /> <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" /> <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" /> <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" /> <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" /> <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" /> <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" /> <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" /> <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" /> <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
解决方案
利用Android原生的资源密度适配机制,无需为每个尺寸单独配置preference,只需按规范组织资源并统一引用即可:
1. 整理启动屏资源到Android原生目录
把cordova-res生成的多尺寸图片,按Android资源目录结构移动到platforms/android/app/src/main/res/下:
- 竖屏图片:分别放入
drawable-port-ldpi/、drawable-port-mdpi/、drawable-port-hdpi/、drawable-port-xhdpi/、drawable-port-xxhdpi/、drawable-port-xxxhdpi/目录,所有图片统一命名(比如splash_icon.png) - 横屏图片:分别放入
drawable-land-ldpi/、drawable-land-mdpi/、drawable-land-hdpi/、drawable-land-xhdpi/、drawable-land-xxhdpi/、drawable-land-xxxhdpi/目录,同样统一命名
2. 在config.xml中配置统一的启动屏引用
只需要添加一条preference配置,Android会自动根据设备密度加载对应目录的资源:
<!-- 引用统一命名的图片资源 --> <preference name="AndroidWindowSplashScreenAnimatedIcon" value="@drawable/splash_icon" />
3. 可选:增强配置
- 设置启动屏背景色:
<preference name="AndroidWindowSplashScreenBackgroundColor" value="#你的背景色值" />
- 设置启动屏图标大小(单位dp):
<preference name="AndroidWindowSplashScreenIconSize" value="48dp" />
4. (可选)使用XML动画启动屏
如果需要动画效果,可在res/drawable/下创建动画XML文件(比如splash_animation.xml),引用不同密度的资源或使用矢量动画,然后在preference中引用该XML:
<preference name="AndroidWindowSplashScreenAnimatedIcon" value="@drawable/splash_animation" />
内容的提问来源于stack exchange,提问作者Pumayk26
相关产品推荐
相关产品推荐

