【Android屏幕适配】浅析px、dp、ppi、dpi、sp

屏幕相关的基础知识

  • 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(pixel)
    像素,1px代表物理屏幕上面的一个像素点。由于Android设备分辨率繁杂、厂商过多的原因,px在实际的开发过程中不建议被使用。如宽高都为100px的图片,在不同分辨率的设备上可能显示的大小不一致,如下图(图片来自android_developer_screens_support):
    image.png

官方对于屏幕适配支持不同密度的建议:
  您在设计布局时必须避免的一个常见陷阱是,使用绝对像素来定义距离或尺寸。 使用像素来定义布局尺寸会带来问题,因为不同的屏幕具有不同的像素密度,因此同样数量的像素在不同设备上可能对应于不同的物理尺寸。 因此,在指定尺寸时,请务必使用 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的计算公式为:
    image

    以分辨率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概念解析


如果您有更好的建议欢迎评论分享,如有错误请批评指正,谢谢。

你可能感兴趣的:(【Android屏幕适配】浅析px、dp、ppi、dpi、sp)