Android平台Ionic 6+Capacitor 4启动页(Splash Screen)拉伸问题求助
Ionic启动页拉伸问题修复方案(cordova-res生成资源场景)
使用cordova-res生成启动页资源后,应用启动时出现启动图拉伸的问题,结合你提供的Capacitor和Android Style配置,可尝试以下几个修复步骤:
1. 校验cordova-res生成的资源规范
cordova-res对原始启动图的尺寸有严格要求,若原图比例不符合标准,生成的各分辨率资源会被强制拉伸:
- 确保原始启动图尺寸至少为2732x2732像素(正方形通用图),避免用非比例原图生成资源
- 重新生成资源,跳过自动配置适配:
cordova-res splash --skip-config --copy - 检查Android项目
res/drawable-*目录下的splash图片,确认各分辨率图片比例与对应屏幕比例匹配(比如xxhdpi对应1280x1920竖屏比例)
2. 调整Capacitor的缩放类型配置
当前配置的androidScaleType: 'CENTER_CROP'会裁剪图片适配屏幕,若原图比例与设备差异大,易出现拉伸或裁剪过度。可替换为以下两种更友好的缩放类型:
// Capacitor.config.ts SplashScreen: { launchShowDuration: 3000, launchAutoHide: true, backgroundColor: '#ffffffff', androidSplashResourceName: 'splash', androidScaleType: 'CENTER_INSIDE', // 保持原图比例,不拉伸,空白处用背景色填充 // 或使用FIT_CENTER:缩放至完全显示,可能留空白 // androidScaleType: 'FIT_CENTER', showSpinner: false, splashFullScreen: false, splashImmersive: false, }
3. 修改Android背景配置,避免强制拉伸
直接将@drawable/splash设为背景会触发Android默认的拉伸填充行为,改用layer-list让图片居中显示:
- 修改
Style.xml:
<style name="AppTheme.NoActionBarLaunch" parent="Theme.SplashScreen"> <item name="android:background">@drawable/splash_background</item> </style>
- 在Android项目
res/drawable目录下创建splash_background.xml:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 对应Capacitor配置中的backgroundColor --> <item android:drawable="@color/white" /> <item> <bitmap android:gravity="center" android:src="@drawable/splash" /> </item> </layer-list>
4. 清除缓存并重新构建
完成以上修改后,执行以下步骤确保资源生效:
# 清除Capacitor缓存 ionic capacitor clean android # 重新生成启动页资源 cordova-res splash --copy # 重新构建并运行 ionic capacitor run android
内容的提问来源于stack exchange,提问作者Dekhas
相关产品推荐
相关产品推荐

