以前一直是个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 |
|