您的位置:首页 > 移动开发 > Android开发

Android屏幕适配的基础知识

2017-05-24 11:35 148 查看

尺寸概念

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

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

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

adb shell wm size




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

厂家

adb shell getprop ro.sf.lcd_density




计算

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

dpi=19202+10802−−−−−−−−−−−√5.5=400

例2:分辨率为1920*1200,7英寸,dpi计算可得:

dpi=19202+12002−−−−−−−−−−−√7=323

屏幕适配

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

drawble

drawble的适配很好理解,将图片放入相应的文件夹内,应用就会根据自身的dpi去调用该文件夹的图片进行显示渲染。

drawbledpi
drawble-ldpi120
drawble-mdpi160
drawble-hdpi240
drawble-xdpi320
drawble-xxdpi480
values

values的适配主要靠
dimens.xml
中自定的dp、sp等常量单位来控制真实显示的大小。理论上,在dpi=160的屏幕中,1dp=1sp=1px;同理,dpi=320的时候,1dp=1sp=2px。

valuesdp
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是以厂家制定为准的,计算而出的只能作为大概的参考,这个只要自己测试一下就可以得出结论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 屏幕适配