背景:现在手机分辨率从480*800,到720*1280,再到1080*1920,最近三星的note4出来了,
都飙到2560*1440了。
从前适配多分辨率的话,用.9.png的图,用dp可以解决很多问题。。。
但随着手机厂家的不断升级硬件,以前的屏幕密度,density等等也在不断飙升。
上述的俩个方法也不能解决所有问题了。。你会发现明明是用了dp单位,用了.9的图,
分辨率同样为的1080p的两个手机显示效果可能大相径庭。
原因呢,还是因为手机密度不一样了,如下图所示
在我们建立工程的时候,android自动给我们建了这几个文件夹,用于放置不同的图片供不同
分辨率的手机调用,
mdpi desity 160,密度比为160/160 = 1
hdpi density 240, 密度比为240/160 = 1.5
xhdpi density 320, 密度比为320/160 = 2
xxhdpi density 480, 密度比为480/160 = 3
正常我们xml文件里设置的dp=10,如果在720*1280,desity为240的分辨率机器上显示正常
同样的apk我们拿到720*1280,desity为320的机器上,就会发现显示结果是有出入的。
症结就在于不同的density,当为240的时候dp=10显示正常,为320的时候dp就需要转化一下了
说了这么多才到正题。。。。
我们需要在res目录下建立类似下图的文件夹,来对应不同的分辨率,以及density。
不要被这么多文件夹吓坏,其实里边只有一个文件,内容大家也可以看到,只是转换下dp而已
转换的公式其实也很简单
譬如hdpi(480*800)--->(1.5)的dp为10,如果要转换成xhdpi-720*1280---->(2)的话,
就是((1.5*720)/(2*480))*10 .
同理如果要转换成xxhdpi-1080*1920 --->(3)
就是((1.5*1080)/(3*480))*10 .
layout_width = "@dimen/dp_10"
这样适配的时候就不会出错了!