android屏幕适配

来源:互联网 发布:子见夫子乎 编辑:程序博客网 时间:2024/04/29 09:16

很多同学对android的适配方式都理解的并不到位所以导致很多时候出现例如图片大小在不同设备上差异很大,lisiview在不同屏幕上显示效果差异很大,有些屏幕比较和谐,有些并不是。今天我总结出几个常见问题,并做解答希望能对大家学习android提供帮助。

1.dp是什么?为什么要用dp

2.drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxdpi是什么?为什么同一张图片分别放在不同文件夹下如果用包裹内容的方式在设备上显示大小会不同。

3.layout-large、layout-xlarge、layout-xxlarge 、values-w820dp是什么?为什么我看到别人的代码里有这些东西。


1.首先要解决这些问题首先要了解px(pixel),dpi(dots per inch),dp/dip(device independent pixels ),是什么,以及他们之间的联系。

1.1 px想必大家都清楚,就是显示设备的一个像素点。

1.2 dpi(dots per inch)

如果直译的话就是每英寸长度有多少个像素点,也就是像素点的密度,通常自从iphone4乔布斯提出视网膜屏(326ppi)的概念后以后中国的手机厂商会经常提到ppi(pixels per inch)像素密度,我记得魅族mx4 pro的ppi值都超500了,也就是说一英寸(2.54CM)的长度就会需要500多个像素点来连接,所以我现在很惊叹现在的工业制造水平。(暂且说ppi和dpi的区别现在可以认为他们是一个意思)。

1.3 dp/dip(device independent pixels)设备非关联先像素(单位)

可以这样认为:这是一个和设备没有关系的长度单位,是一个虚拟的长度单位,android用他来避免和消除使用同样的长度在不同的设备上显示效果差异过大。其和px以及dpi的转换关系为dp = px/(dpi/160) 他是以160dpi为基准来将像素转换为dp值,可以说在160dpi的屏幕如果用px做单位和用dp做单位效果是相同的。

    下面为几张实例图便于理解dp/dip


    可以看到不同屏幕密度的屏幕下px和dp的显示效果是不同的。只有160(mdpi)下px和dp显示效果相同。160px在各个屏幕上长度只能为160px,但是160dp在三个不同

的屏幕上分别代表(利用公式px = dp*(dpi/160))160*(160/160) = 160px,160*(240/160)=240px,160*(320/160)=320px


0 0