以前一直是个Get用户,一直都是伸手党,最近刚好项目中要用到机型适配,试了很多方法(配置不同layout文件夹,不同的layout文件等)。但都感觉后期维护工作量巨大,后来从图片资源适配获得灵感,使用value不同的dimens文件,达到适配的效果:
1、创建不同的位图(Android官方介绍)
- xxxhdpi: 5.0 500*500
- xxhdpi: 3.0 300*300
- xhdpi:2.0 200*200
- hdpi:1.5 150*150
- mdpi:1.0(baseline) 100*100
- ldpi:0.75 75*75
文件夹名称 | 比例 | 图片大小(示例) | 屏幕宽度 | DPI值 | 分辨率举例 |
drawable-xxxhdpi | 5.0 | 500*500 | 1440左右 | 640dpi | 2560*1440(Nexus6) |
drawable-xxhdpi | 3.0 | 300*300 | 1080左右 | 480dpi | 1080*1920 |
drawable-xhdpi | 2.0 | 200*200 | 720左右 | 320dpi | 720*1280 |
drawable-hdpi | 1.5 | 150*150 | 480左右 | 240dpi | 480*800,480*854,540*960 |
drawable-mdpi | 1.0(BaseLine) | 100*100 | 360左右 | 160dpi | 320*480 |
drawable-ldpi | 0.75 | 75*75 | 240左右 |
2、借鉴drawable文件夹,依次创建values,values-mdpi, values-hdpi,values-xhdpi, values-xxhdpi, values-xxxhdpi。 (鉴于现在ldpi的机型很少,就直接使用默认的values来做适配)。
测试的过程中,使用mdpi做为基线 ,我针对像素单位dp使用10dp, 字体大小单位sp使用10sp。其它文件的单位,分别使用上面的比例关系,设置字体,边距大小。
文件夹名称 | 字体大小sp | 距离大小dp | 手机输出值(字体大小) | 手机显示值(距离大小) |
values-xxxhdpi | 50 | 50 | 175.0 | 175.0 |
values-xxhdpi | 30 | 30 | 90.0 | 90.0 |
values-xhdpi | 20 | 20 | 40.0 | 40.0 |
values-hdpi | 15 | 15 | 22.5 | 22.5 |
values-hdpi(854*480) | 25.87 | 22.5 | ||
values-mdpi | 10 | 10 | 10.0 | 10.0 |
values-ldpi | 7.5 | 7.5 | 5.625 | 5.625 |