屏幕相关的基础知识
-
mm
mm(millmeters)
毫米,长度单位。 -
in
in(inches)
英寸,长度单位,屏幕物理尺寸的基本单位,1英寸 ≈ 2.54厘米; -
pt
pt(points)
一个标准单位,1pt = 1/72英寸 = 0.035厘米;
屏幕分辨率
屏幕分辨率(Screen Resolution)是指设备屏幕横向与纵向的像素点个数,常见的分辨率有:
类别 | 分辨率 | 备注 |
---|---|---|
QVGA | 240x320 | 已过时 |
HVGA | 320x480 | 已过时 |
WVGA | 480x800 | 已过时 |
720P | 720x1080 | |
1080P | 1080x1920 | |
2k | 1440x2560 |
目前市面上绝大部分设备分辨率集中在720p、1080p、2k,目前1080p、2k在新机型中占据主流,720p分辨率仍具有一定比例的市场占有量。
基础概念<px、dp、ppi、dpi、sp>
-
px(pixel)
像素,1px代表物理屏幕上面的一个像素点。由于Android设备分辨率繁杂、厂商过多的原因,px在实际的开发过程中不建议被使用。如宽高都为100px的图片,在不同分辨率的设备上可能显示的大小不一致,如下图(图片来自android_developer_screens_support):
官方对于屏幕适配支持不同密度的建议:
您在设计布局时必须避免的一个常见陷阱是,使用绝对像素来定义距离或尺寸。 使用像素来定义布局尺寸会带来问题,因为不同的屏幕具有不同的像素密度,因此同样数量的像素在不同设备上可能对应于不同的物理尺寸。 因此,在指定尺寸时,请务必使用 dp 或 sp 单位。dp 是一种密度无关像素,对应于 160 dpi 下像素的物理尺寸。 sp 是相同的基本单位,但它会按用户首选的文本尺寸进行缩放(属于缩放无关像素),因此您在定义文本尺寸时应使用此计量单位(但切勿为布局尺寸使用该单位)。
-
dp(又称dip,Density-independent Pixels)
密度独立像素——一个基于屏幕物理密度的抽象单元。这些单位相对于160 dpi(每英寸的点)屏幕,1dp大约等于1px。当在更高密度的屏幕上运行时,用于绘制1dp的像素的数量会被一个适合屏幕dpi的因素放大。同样地,当在低密度屏幕上时,1dp的像素数量也会减少。DP与像素的比值随屏幕密度而变化,但不一定是正比。使用dp单位(而不是px单位)是一个简单的解决方案,可以在布局中适当地调整大小,以适合不同的屏幕密度。换句话说,它为您在不同设备上的UI元素的真实大小提供了一致性。 -
ppi
ppi(pixels per inch)
像素密度,是一个表示打印图像或显示器单位面积上像素数量的指数。一般用来计量电脑显示器,电视机和手持电子设备屏幕的精细程度。通常情况下,ppi越高,表示屏幕的像素密度越高,这样屏幕内容看起来就更加细腻,看起来也就更加真实。
ppi的计算公式为:
以分辨率1280*720、屏幕对角线尺寸为4.3英寸的设备为例:
ppi = √(12802+7202) / 4.3 = 341.5359……≈342 -
dpi
dpi(dots per inch)
屏幕密度,是一个量度单位,用于点阵数位影像,意思是指每一英寸长度中,取样或可显示或输出点的数目。例如, 与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域的像素较少。
为简便起见,Android 将所有屏幕密度分组为六种通用密度,具体如下表:
类别 | dpi | density |
---|---|---|
ldpi(低) | ~120dpi | 0.75 |
mdpi(中) | ~160dpi | 1.0 |
hdpi(高) | ~240dpi | 1.5 |
xhdpi(超高) | ~320dpi | 2.0 |
xxhdpi(超超高) | ~480dpi | 3.0 |
xxxhdpi(超超超高) | ~640dpi | 4.0 |
-
ppi与dpi的区别
dpi(dots per inch)
、ppi(pixels per inch)
,前者突出dot(物理像素点),后者突出pixel(像素),dot是一个物理的像素点,pixel就不一定了,一个pixel可能由很多个物理dot组成。
对Android而言,dpi等同于ppi,具体可以参考PPI vs. DPI: what’s the difference?
-
sp(Scale-independent Pixel)
与缩放无关的抽象像素。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时,1sp = 1dp,而当文字尺寸是“大”或“超大”时,1sp > 1dp。
参考文章
Android_dev_screens_support
Android开发中dp、dpi、px的区别(转)
dp的定义原理和dpi,ppi,px,pt,sp之间的区别
Android开发中dpi和ppi的理解
Android 中 px、dp、dip、sp详解
Android中px, ppi, dpi, dp, dip, sp概念解析
如果您有更好的建议欢迎评论分享,如有错误,请批评指正,谢谢。