原标题:Android的尺寸单位
前言
当前Android 的设备多种多样,它们有着不同的屏幕尺寸和像素密度。各应用为了保证可以在各机型上展示较好的交互界面,就需要在实现阶段根据对应的尺寸单位进行兼容性开发。近期在实际项目过程中,小编接触到了一些尺寸度量单位,下面进行简单的总结。
介绍
为了按照屏幕类型对设备进行分类,Android 为每种设备定义了两个特征:屏幕尺寸和 屏幕密度。
名词注释
屏幕尺寸:即系统为应用界面所提供的可见空间, 应用的屏幕尺寸并非设备的实际屏幕尺寸,而是综合考虑屏幕方向、系统装饰(如导航栏)和窗口配置更改后的尺寸。
像素密度:屏幕上像素的物理密度,即屏幕单位面积内的像素数,称为 dpi(dots per inch,每英寸的点数)。它与分辨率不同,后者是屏幕上的总像素数。
像素密度的计算方法,下面将通过具体数据举例说明。假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则可以计算出在这部手机的屏幕上,每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向),160dpi就是这部手机的像素密度。横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。
下图为屏幕尺寸相同但像素密度不同的两个设备上图像的直观展示效果。
下面将具体介绍各个尺寸度量单位。
px
介绍
即像素,1px代表屏幕上一个物理的像素点;同样px的图片,在不同手机上显示的实际大小可能不同,效果参考下图。
测试关注点
px在实际项目中的应用场景,例如页面中线条的宽细度、字体大小,具体实例如下图所示。
2.分辨率 Resolution
介绍
指手机屏幕垂直和水平方向上的像素个数,比如分辨率是480*320,则指设备垂直方向有480个像素点,水平方向有320个像素点。
测试关注点
① 分辨率是移动端应用兼容性测试时,设备选择标准的一个重要因素;
② 通过adb shell wm size命令可查看屏幕分辨率。
3. dp
介绍
这个是最常用的尺寸单位,它与“像素密度”密切相关。dp 是一个虚拟像素单位,1 dp 约等于中密度屏幕(160dpi;“基准”密度)上的 1 像素,dp 与px的换算关系如下:
px = dp * (dpi / 160)
结合具体数据实例说明换算方法及直观表现如下,Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。例如界面上有一个长度为“80dp”的图片,那么它在240dpi的手机上实际显示为80x1.5=120px,在320dpi的手机上实际显示为80x2=160px。如果你拿这两部手机放在一起对比,会发现这个图片的物理尺寸“差不多”,实现了“密度独立性”,使用dp作为单位的效果可见下图。
测试关注点
① 在实际项目中,非文字的一般会使用dp作为尺寸度量单位,如指定两个视图的间距,H5页面中某布局的宽度(eg.layout_width="60dp");
② 通过adb shell dumpsys window displays命令可查看屏幕分辨率、dp值、虚拟键高度等。(adb shell wm density可查看dpi)
③ 在定义距离、大小等时,为实现“密度独立性”,需关注度量单位应为dp,并可实现动态的px转换。
④ 换算成物理距离后,1dp约为0.19mm。
4. dip
介绍
与dp完全相同,只是名字不同而已,早期使用较多。
5. sp
介绍
sp是与缩放无关的抽象像素(Scale-independent Pixel),sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时,1sp=1dp=0.00625英寸;而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。
当指定文本大小时,则会使用可缩放像素 (sp) 作为单位。
其他几个较少比较少用到的尺寸单位,举例如下:
mm:即毫米;
in:即英寸,1英寸≈2.54厘米;
pt:1pt=1/72英寸=0.035厘米。
结语
在实际项目中,我们会较多的接触到 部分尺寸单位,在了解互相间的转换计算关系后,可方便测试同学更好的直观评估需求/视觉中尺寸定义的合理性,不因点小而疏忽。
参考文章:
https://www.cnblogs.com/yangmingyu/p/6928063.html
https://developer.android.com/guide/practices/screens_support返回搜狐,查看更多
责任编辑: