使用flutter_native_splash时背景图适配需求:高度匹配屏幕宽度溢出隐藏
Flutter启动页背景图高度适配、宽度裁剪方案(flutter_native_splash)
针对你用1024×1024图片做启动页,想要高度匹配屏幕、宽度超出隐藏不拉伸的需求,直接用flutter_native_splash默认的gravity属性确实达不到效果,需要针对Android和iOS分别调整配置:
Android 端处理
- 创建自定义启动页布局
在android/app/src/main/res/layout目录下新建launch_screen.xml(无该目录则手动创建),内容如下:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitStart" android:src="@drawable/launch_image" android:clipToPadding="true" /> </FrameLayout>
scaleType="fitStart"会让图片按比例缩放至高度铺满屏幕,宽度随之等比放大,超出屏幕的部分被自动裁剪;clipToPadding="true"确保超出区域被隐藏。
- 配置flutter_native_splash
在pubspec.yaml中指定使用自定义布局:
flutter_native_splash: color: "#ffffff" # 背景色建议和图片边缘保持一致 image: assets/images/your_splash_image.png # 替换为你的图片路径 android: custom_layout: true layout_name: "@layout/launch_screen"
iOS 端处理
iOS端无需自定义布局,直接在pubspec.yaml中配置content mode即可:
flutter_native_splash: # 保留上述color、image配置 ios: content_mode: "scaleAspectFill"
scaleAspectFill会让图片按比例缩放,优先填满屏幕高度,宽度超出部分被自动裁剪,iOS默认开启裁剪功能,无需额外设置。
最终生成启动页
配置完成后,执行命令生成启动页文件:
flutter pub run flutter_native_splash:create
重新运行项目即可看到效果:图片高度完全匹配屏幕,宽度超出部分隐藏,不会出现拉伸变形问题。
内容的提问来源于stack exchange,提问作者Atanas Nankinski
相关产品推荐
相关产品推荐

