Android 整个背景图适配纯色背景+比列放置图片,次之可选.9图设计留出可拉伸区域,分要整一些拉伸就会变形或靠近边角区域有重要图标只能采用最原始的多图片适配了,记录下这里踩到的坑:
1.文件命名如下图 mipmap-xxhdpi-2130x1080 2130在前1080再后否则会报错(不明所以,有知道原因的告诉下)
2.为什么会出现 2130、2030这样的数据貌似没有见到过这样的分辨率,这里就是第二个坑。
如果当前为xhdpi设备,并且只有以下几个目录,则drawable/mipmap的寻找顺序为:
xhdpi -> xxhdpi -> xxxhdpi(如果没有更高的了) -> nodpi(如果有的话) -> hdpi -> mdpi,如果在xxhdpi中找到目标图片,则压缩2/3来使用,如果在mdpi中找到图片,则放大2倍来使用。
如果当前设备为xhdpi-1280x800,当前目录有xhdpi-1280x800,xhdpi-1280x960,-1280x720,则寻找顺序为:
xhdpi-1280x800 -> xhdpi-1280x720 -> values-xhdpi。
只向等于或低于自己分辨率的目录下寻找,直到values-xhdpi,如果依然没有找到,按照之前的顺序继续进行。(hdpi-1280x800 -> hdpi-1280x720 -> hdpi -> …)
结合上面的结论,当全面屏手机开启虚拟按键后,扣除掉虚拟按键占用的尺寸(在小米系统、2160x1080的手机上,虚拟按键高度为130px)屏幕尺寸约为2030x1080 ,注意现在是2030x1080,之前我建的资源目录是2160x1080,根据上面的匹配规则,是不会去匹配比自己分辨率高的资源目录的,所以才出现了一直适配没效果的问题。
所以,我们只需要再建一个mipmap-xxhdpi-2030x1080的目录,问题就得到解决了。
这中方案适配,理论上是可以但同时会带来问题,我没没有办法测出所有手机的真实尺寸,目前我是减掉高度的120左右的值,但肯定会出现找错目录的情况,只能说可以适配看到手机的情况不会出现问题。