经过多次阅读后我才问这个问题。我一直听说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的混淆)
有人可以清除这个大混乱或指导我发表一篇可以清除它的文章
答案 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)
DisplayMetrics.density
,它为您提供了dp
计量单位的乘数。DisplayMetrics.scaledDensity
,它还会考虑用户选择的文字大小。说实话,dp
单位旨在为您提供有关屏幕上对象大小的一些安全性。 160dp应该代表任何屏幕上的一英寸。为实现这一目标,您必须将维度乘以DisplayMetrics.density
或DisplayMetrics.scaledDensity
。
也就是说,如果您在代码中执行此操作。对于Layout
,您只需在View
中输入dp
的维度,并让Android框架为您处理。