关于Android中的分辨率,屏幕方面的困惑

时间:2014-04-25 04:34:15

标签: android resolution screen-resolution dpi ppi

经过多次阅读后我才问这个问题。我一直听说dpi适用于打印机,但现在谈到屏幕时,他们也在讨论dpi。他们是指ppi吗?

现在,对于我来说,真正的分辨率是每个尺寸可以显示的像素数,例如800x600表示宽度为800像素,高度为600像素,但在某些地方我看到它们将分辨率称为dpi。

我正在努力理解这个概念,因为它在Android中非常重要,就像在article中一样,

例如,假设在屏幕上渲染时图标的尺寸为0.5x0.5英寸。接下来,必须以支持的最大密度或可缩放矢量图形创建图像。最佳实践是支持最大密度,目前是480 dpi的xxhdpi。在480 dpi时,0.5x0.5英寸的图像转换为240x240像素。

如果我理解的话,它实际上是指dpi为ppi吗?

到目前为止,我所理解的是不同的像素可能会呈现不同数量的像素。这就是我们不使用像素作为测量单位的原因。相反,我们使用dp,其中dp是160 dpi设备上的一个像素(再次关于dpi& ppi的混淆)

有人可以清除这个大混乱或指导我发表一篇可以清除它的文章

2 个答案:

答案 0 :(得分:1)

Mate,分辨率为800 X 600意味着屏幕有480,000个像素点将用于渲染屏幕(这通常与显示器的尺寸混淆)。 DPI或PPI表示每英寸点/点,这是屏幕密度的度量。

因此,只要给出分辨率,除非密度参数也可用,否则无法确定显示的实际长度。所以800 X 600分辨率有480,000像素点和a让这个设备的密度为480 dpi。

所以屏幕的宽度

=沿其宽度/密度

的像素点数没有

= 800/480

= 1.67英寸

类似地,

高度= 600/480 = 1.25英寸

如果800X600分辨率设备的密度为160 dpi,其尺寸将发生巨大变化。计算后,计算160 dpi的高度/宽度800X600。将这两个值与480 dpi以上的计算值进行比较。

屏幕的宽度 =沿其宽度/密度

的像素点数

= 800/160

= 5.0英寸

类似地,

高度= 600/160 = 3.75英寸

这就是为了最好地适应屏幕而缩放图像的原因在于框架化的android环境中是如此复杂的问题。但是,我喜欢android!

希望这有帮助! 任何有一些东西要添加/删除。修改这个答案的人都是最受欢迎的。

答案 1 :(得分:1)

  1. dpi(每英寸点数)== ppi(每英寸像素数)
  2. 您还在谈论DisplayMetrics.density,它为您提供了dp计量单位的乘数。
  3. 还有DisplayMetrics.scaledDensity,它还会考虑用户选择的文字大小。
  4. 说实话,dp单位旨在为您提供有关屏幕上对象大小的一些安全性。 160dp应该代表任何屏幕上的一英寸。为实现这一目标,您必须将维度乘以DisplayMetrics.densityDisplayMetrics.scaledDensity

    也就是说,如果您在代码中执行此操作。对于Layout,您只需在View中输入dp的维度,并让Android框架为您处理。