`

android适配多分辨率的小技巧

阅读更多
android多分辨率适配其实是老生常谈的话了,今天再拿出来炒个冷饭

背景:现在手机分辨率从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"


这样适配的时候就不会出错了!
  • 大小: 8.1 KB
  • 大小: 20.2 KB
  • 大小: 10.6 KB
  • 大小: 29.9 KB
0
1
分享到:
评论
1 楼 shizhangliao 2014-09-05  
     

相关推荐

Global site tag (gtag.js) - Google Analytics