Kotlin安卓应用splashscreen无响应、大屏设备显示被挤压问题求解


Android启动页多分辨率适配方案
矢量图适配方案(仅需1套资源)
针对PS导出SVG色彩偏移的问题,可通过调整导出配置解决:
- 导出时在PS的SVG配置面板将颜色配置项设置为嵌入sRGB,禁用其他自定义色彩配置文件,即可解决色彩偏移问题
- 将导出的SVG通过Android Studio的
Vector Asset工具导入项目,自动生成XML格式的矢量Drawable,可在任意分辨率、任意屏幕比例的设备上无失真显示 - 启动页布局/主题配置时需设置正确的缩放规则:如果使用ImageView承载启动图,将
scaleType属性设置为centerCrop即可避免拉伸;如果使用主题的windowBackground实现冷启动页,建议使用层列表(Layer List)封装资源,示例配置如下:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 填充背景色,和启动图背景一致即可 --> <item android:drawable="@color/launcher_bg_color"/> <item> <bitmap android:src="@drawable/launcher_vector" android:gravity="center"/> </item> </layer-list>
将上述XML作为启动页主题的android:windowBackground属性值即可保证素材永远居中,不会因屏幕比例变化被挤压。
位图适配方案(无需做全分辨率多套资源)
如果不想使用矢量图,仅需制作5套通用dpi的位图资源放入对应drawable目录即可覆盖99%以上的主流设备:
drawable-mdpi:320*480drawable-hdpi:480*800drawable-xhdpi:720*1280drawable-xxhdpi:1080*1920drawable-xxxhdpi:1440*2560
系统会自动匹配当前设备的dpi拉取对应资源,找不到对应资源时会自动向上拉取更高dpi的资源缩放使用,不会出现明显模糊,配合上述层列表配置即可完全避免挤压变形问题。
官方规范适配方案
Android 12及以上系统提供了官方SplashScreen API,按照规范接入后仅需配置图标和背景色,系统会自动完成所有设备的适配工作,无需手动处理不同分辨率、不同屏幕比例的适配问题。
内容的提问来源于stack exchange,提问作者Ahmed Anwer
相关产品推荐
相关产品推荐

