Android屏幕适配的基础知识

来源:互联网 发布:iphone6虚拟定位软件 编辑:程序博客网 时间:2024/06/01 11:26

尺寸概念

resolution:以像素数表示的高度与宽度

dpi:dots per inch,一英寸的像素数量

分辨率可各种检测软件查得,也可由adb命令行查看:

adb shell wm size

![adb得到分辨率][1]

dpi可由计算得出,但实际效果是由厂家制定的dpi而定的:

  • 厂家
adb shell getprop ro.sf.lcd_density

![adb得到dpi][2]

  • 计算

    例1:分辨率为1920*1080,5.5英寸,dpi计算可得:

    dpi=19202+108025.5=400

    例2:分辨率为1920*1200,7英寸,dpi计算可得:
    dpi=19202+120027=323

屏幕适配

Android的屏幕适配大体分三部分,一部分体现在drawble中,一部分体现在values中,还有一部分体现在layout(暂不讨论)。

  • drawble
    drawble的适配很好理解,将图片放入相应的文件夹内,应用就会根据自身的dpi去调用该文件夹的图片进行显示渲染。
drawble dpi drawble-ldpi 120 drawble-mdpi 160 drawble-hdpi 240 drawble-xdpi 320 drawble-xxdpi 480
  • values
    values的适配主要靠dimens.xml中自定的dp、sp等常量单位来控制真实显示的大小。理论上,在dpi=160的屏幕中,1dp=1sp=1px;同理,dpi=320的时候,1dp=1sp=2px。
values dp values-w820dp 适配宽度为820dp的屏幕 values-sw500dp 适配最小宽度为500dp的屏幕(宽高均大于500dp) values-land 适配横置屏幕 values-600dp-land 适配横置时宽度为600dp的屏幕 values-port 适配竖立屏幕 values-500dp-port 适配竖立时宽度为500dp的屏幕 values-1920x1080 精确适配分辨率为1920*1080的屏幕

那么问题来了,这个w820dp中的820dp是什么意思?

例1:分辨率为1920*1080,5.5英寸,dpi计算得到为400,厂家制定为480,那么其宽高分别为:

w=1920480/160=640dp

h=1080480/160=360dp

例2:分辨率为1920*1200,7英寸,dpi计算得到为323,厂家制定为320,那么其宽高分别为:
w=1920320/160=960dp

h=1200320/160=600dp

值得注意一点的是,dpi是以厂家制定为准的,计算而出的只能作为大概的参考,这个只要自己测试一下就可以得出结论。