【问题标题】:How do dp, dip, dpi, ppi, pixels and inches relate?dp、dip、dpi、ppi、像素和英寸如何关联?
【发布时间】:2012-01-18 17:11:46
【问题描述】:

我正在阅读dp, dip, px, sp measurements,但我仍然有一些关于 dp/dpi vs ppi vs px vs inch 的问题。我无法比较它们……一英寸是最大的吗?

他们说 160 dpi 意味着每英寸 160 个像素。这是否意味着 1 英寸包含 160 个像素?

他们还说 160 dpi 屏幕上的 1 个像素 = 1 dp。这是否意味着 1 像素和 1 dp 相等?

最后,我们为什么要使用 dp 而不是 px?我知道这是理想的,但是为什么

【问题讨论】:

  • 记住很多android屏幕的分辨率和密度不同,看看这是否有帮助:stackoverflow.com/q/2025282/324625
  • @steve blackwell:我在读那个!但我无法进行比较:\

标签: mobile user-interface pixels dpi density-independent-pixel


【解决方案1】:

您应该(几乎)始终使用灵活的尺寸单位,例如 dp,它是与密度无关的像素,因为一台设备上的 300px 不一定与另一台设备上的 300px 具有相同数量的屏幕空间。最大的实际影响是,您的布局在密度与您的设计目标不同的设备上看起来会大不相同。

  • dpdip 表示与密度无关的像素
  • dpippi 表示每英寸的点数(或像素数)
  • inch 是与实际屏幕尺寸相关的物理测量值
  • px 表示像素 - 一个像素根据密度填充任意数量的屏幕区域。

例如,在160dpi 屏幕上,1dp == 1px == 1/160in,但在240dpi 屏幕上,1dp == 1.5px。所以不,1dp != 1px1dp == 1px恰好有一种情况,那就是在160dpi 屏幕上。英寸等物理测量单位永远不应成为您设计的一部分,也就是说,除非您正在制作尺子。

确定1dp 的像素数的简单公式是px = dp * (dpi / 160)

【讨论】:

  • 市场上有很多屏幕密度,因此您当然可以利用这些计算。我不确定你为什么,但你绝对可以。例如,如果您想知道 300 dp 在 240 dpi 屏幕上占用多少像素,300*(240/160) = 450 pixels
  • @ChrisCashwell,所以在创建这些要使用的图像时,在定义它们时使用什么数字?使用尺寸developer.android.com/guide/practices/ui_guidelines/…作为规定的宽度和高度以及分辨率密度?
  • 其实 1 英寸大约是 160dp ,所以可以将其视为某种度量......
  • @TusharPandey DP 是与密度无关的像素,DPI 是每英寸点数。 DP是指基于给定屏幕上像素密度的抽象单位,而DPI是指每英寸的“点”数。给定屏幕的 DPI 值,您可以得出屏幕上 DP 的数量。
  • 160 dp = 1 英寸。来自 Google 规范:“A dp 对应于 160 dpi 像素的物理尺寸。” 160 dpi 像素的物理尺寸正好是 1/160 英寸。因此 160 dp = 1 英寸。
【解决方案2】:

dp 是一种物理量度,例如英寸。 (是的,是的。请继续阅读。)

"A dp 对应于 160 dpi 像素的物理尺寸" (https://developer.android.com/training/multiscreen/screendensities.html#TaskUseD)

160 dpi 像素的物理尺寸正好是 1/160 英寸。因此 dp 的大小是 1/160 英寸。 160 dp = 1 英寸。

Px 是屏幕上某种随意的度量单位。

有关 dp 在不同设备上转换为 px 的示例,请参见此处:

https://stackoverflow.com/a/39495538/984003

【讨论】:

  • 我想知道他们本来可以使用英寸或厘米的情况下为什么要提出这种新的测量单位“dp”。
  • 不幸的是,将 dp 等同于物理尺寸不再是正确的方法。许多设备现在允许您更改屏幕缩放级别,这意味着 160dp 在每个缩放级别上具有不同的物理尺寸。这些通过更改设备的“逻辑”屏幕密度(320dpi、240dpi 等)来工作。因此,准确地说,当逻辑 dpi 与物理 dpi(每英寸物理像素)匹配时,160dp 是 1 英寸。请注意,其中一些设备不默认为 1 倍变焦。例如,三星 S5e 的物理密度约为 288dpi,但出厂默认逻辑密度为 360dpi
【解决方案3】:

dp、dip、dpi、ppi、像素和英寸有何关系?

出于android开发目的:

dp = dip
dpi = ppi
inch x dpi = pixels
dp = 160 x inch
dp = 160*pixels/dpi

所以,在 160dpi 手机 (mdpi) 上:

2 inches = 320 dp
2 inches = 320 pixels

在 180 dpi 手机上:

2 inches = 320 dp
2 inches = 360 pixels

请注意,2 英寸总是 320dp,与屏幕尺寸无关。 dp 是 1/160 英寸的物理距离。

dp 到像素的公式很有趣:

dp = 160*pixels/dpi

相当于:

dp = pixels/(dpi/160)

dpi/160 是一个有趣的因素。它与 android 的 mdpi bin 相比的相对密度以及您必须为各种资源 bin 缩放图形的数量。您会在this 页面上看到多次提到该因素,0.75 是 ldpi 的因素。

【讨论】:

    【解决方案4】:

    我会用一个例子来解释。

    float density = context.getResources().getDisplayMetrics().density;
    float px = someDpValue * density;
    float dp = somePxValue / density;
    

    密度等于

    .75 on ldpi (120 dpi)
    1.0 on mdpi (160 dpi; baseline)
    1.5 on hdpi (240 dpi)
    2.0 on xhdpi (320 dpi)
    3.0 on xxhdpi (480 dpi)
    4.0 on xxxhdpi (640 dpi)
    

    例如,

    我有一台带有432 dpi (http://dpi.lv/#1920×1080@5.1″) 的三星 S5。

    所以,density = 432/160 = phone's dpi/baseline = 2.7

    假设我的顶栏是48dp。这引用了baseline (160dpi)

    所以,对于我的 S5,它将是 48dp * 2.7

    那如果我想看实际高度:

    它将是(48dp * 2.7) / 432 dpi = 0.3 inches

    【讨论】:

      【解决方案5】:

      DP 是仅考虑屏幕物理尺寸时的分辨率。当您使用 DP 时,它会将您的布局缩放到具有不同像素密度的其他类似大小的屏幕。

      虽然有时您确实需要像素,但当您在代码中处理尺寸时,您总是在处理真实像素,除非您转换它们。

      【讨论】:

      • 所以在创建图像时,以像素为单位的分辨率是相同的,只是您更改了物理尺寸?因此,在使用 Photoshop 时,您可以坚持默认的每英寸 72 像素,然后在像素数中获得正确的宽度/高度?
      【解决方案6】:

      当不是指 android 而是指监视器时, DP实际上是Dot Pitch的意思,最初来自CRT显示器。它是指 2 个像素之间的对角线距离,以 mm 为单位。在 LCD 显示器中,一个像素较大,假设像素彼此相邻而没有间隙(通常有一个非常小的间隙,但为简单起见,我们假设它为零),则 2 个中心之间的对角线距离每个像素等于像素的对角线大小。 DP越低,图像越清晰。

      DP = 25.4÷ppi 0.25 DP 是标准的,锯齿状边缘 0.20 DP被认为更清晰 160 ppi = 0.158 DP

      所以 DiP 实际上是 1000 x DP 的舍入近似值,而 2 并不等价,只是非常接近的近似值。

      如前所述,您不应该以像素大小为基础,因为您可以缩放。这是为了在屏幕上显示的内容有多清晰。

      在显示器中,如果您想要 20 英寸的清晰度(显示器到眼睛的平均距离)(

      任何大于这些尺寸的显示器尺寸都会出现像素化,更小会更清晰。

      另外值得注意的是,每英寸 72 像素是 Mac 标准,而且非常陈旧。 96 ppi 是指 Windows 分辨率。 Photoshop 最初是为 Mac 设计的。

      【讨论】:

      • 你不应该基于像素大小的原因是因为它可能是一个非常不同的物理大小,具体取决于像素密度。
      猜你喜欢
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      相关资源
      最近更新 更多