【发布时间】:2011-08-13 09:38:16
【问题描述】:
有人会说,如果 Galaxy Tab 屏幕分辨率(纵向模式)为600px,屏幕宽度为3.55inch,则屏幕密度为600/3.55 = 169 dpi。了解这一点并牢记计算设备独立像素 (dp) 的方式 (http://developer.android.com/guide/practices/screens_support.html):
px = dp * (dpi / 160);
600 = dp * (169 / 160);
dip = 568
因此,从位置 0 开始绘制 568dp(与设备无关的像素)宽度的水平线必须与屏幕宽度完全匹配。但是如果你在设备上试试这个,你会发现屏幕宽度是400dp。我将再次使用相同的公式,但获取 dpi:
600 = 400 * (dpi / 160);
dpi = 240
那么有240dpi、3.55inch屏幕宽度和600pixels,是否意味着一个物理像素由多个“点”组成,否则参数对应于852pixel (3.55*240)的宽度。
我认为 dpi 的意思是每英寸的点数,也就是每英寸的像素数。但这似乎不是真的……
稍后添加:
这个(http://developer.android.com/guide/topics/resources/more-resources.html#Dimension)说:
无论屏幕密度如何,160dp 始终为一英寸
这不是真的。只需从这里检查测量源: Difference between android dimension: pt and dp
后来添加:
我问的原因是违反160dp = 1inch 的规则会导致在将控件宽度指定为例如320dp 它将在 Galaxy Tab 上覆盖更大的部分,这是真正必要的,并且比您对 600x1024px 屏幕的期望要大得多......
感谢您的澄清 BR 钢
【问题讨论】:
-
我认为您可能将 dpi 与 dip、设备无关像素混淆了。
-
嗨,你能更具体地说明我做错了什么吗?我哪里做错了?
-
我可能误读了您之前的帖子,但也许您想查看 developer.android.com/reference/android/util/…>。我认为它可能不会返回您从计算中期望的密度。我没有检查你的数学,但如果密度是 160 而不是 169,也许这一切都在一起了?
-
Android 文档现已更新,删除了 160 dp 等于 1 英寸的错误说法。
标签: android screen screen-resolution galaxy galaxy-tab