dp,dip,dpi,ppi,像素和英寸如何相关?

Cha*_*eep 25 mobile user-interface dpi pixels density-independent-pixel

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

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

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

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

Chr*_*ell 44

您应该(几乎)总是使用灵活的大小单位,例如dp,与密度300px无关的像素,因为在一台设备上不一定与另一台设备上的屏幕空间相同300px.最大的实际意义是,您的布局在密度与设计目标不同的设备上看起来会有很大不同.

  • dp或者dip表示与密度无关的像素
  • dpi或者ppi表示每英寸点数(或像素数)
  • inch 是与实际屏幕尺寸相关的物理测量
  • px 表示像素 - 像素根据密度填充任意数量的屏幕区域.

例如,在160dpi屏幕上1dp == 1px == 1/160in,但在240dpi屏幕上,1dp == 1.5px.所以不,1dp != 1px.有只有一个案件1dp == 1px,这是一个在160dpi屏幕上.像英寸这样的物理测量单位永远不应该成为你设计的一部分 - 也就是说,除非你制作一把尺子.

确定多少像素一个简单的公式1dp实现的是px = dp * (dpi / 160).

  • 实际上,1英寸约为160dp,因此可以将其视为某种测量...... (4认同)
  • 市场上有许多屏幕密度,因此您当然可以利用这些计算.我不知道你为什么这么做,但你绝对可以.例如,如果你想知道240dpi屏幕上300 dp会占用多少像素,`300*(240/160)= 450像素` (3认同)
  • 160 dp = 1 英寸。来自 Google 规范:“dp 对应于 160 dpi 时像素的物理尺寸。” 160 dpi 像素的物理尺寸正好是 1/160 英寸。因此 160 dp = 1 英寸。 (2认同)

Sam*_*Sam 6

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

出于安卓开发的目的:

dp = dip
dpi = ppi
inch x dpi = pixels
dp = 160 x inch
dp = 160*pixels/dpi
Run Code Online (Sandbox Code Playgroud)

因此,在 160dpi 手机 (mdpi) 上:

2 inches = 320 dp
2 inches = 320 pixels
Run Code Online (Sandbox Code Playgroud)

在 180 dpi 手机上:

2 inches = 320 dp
2 inches = 360 pixels
Run Code Online (Sandbox Code Playgroud)

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

dp 到像素的公式很有趣:

dp = 160*pixels/dpi
Run Code Online (Sandbox Code Playgroud)

相当于:

dp = pixels/(dpi/160)
Run Code Online (Sandbox Code Playgroud)

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


use*_*003 6

dp是像英寸一样的物理测量.(是的,是的.请继续阅读.)

"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的示例,请参见此处:

/sf/answers/2764687691/

  • 我想知道为什么他们可以使用英寸或厘米,却想出了这个新的测量单位“dp”。 (2认同)