2011-08-13 85 views
6

人们会说,如果银河标签屏幕分辨率(肖像模式)是600px和屏幕宽度是3.55inch,屏幕密度将是600/3.55 = 169 dpi。知道并牢记设备无关的像素(DP)被计算的方式(http://developer.android.com/guide/practices/screens_support.html):了解三星Galaxy Tab屏幕密度

px = dp * (dpi/160); 
600 = dp * (169/160); 
dip = 568 

所以绘制的568dp(设备无关的像素)的水平线宽度开始在位置0处的宽度必须完全匹配的屏幕。但是,如果您在设备上尝试此操作,则会发现屏幕宽度为400dp。我将再次使用相同的公式,但为获得DPI:

600 = 400 * (dpi/160); 
dpi = 240 

所以具有240dpi3.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 斯登

+0

我认为您可能会将dpi与倾斜设备无关的像素混淆。 – Petrus

+0

嗨,你能更具体地说明我做错了什么吗?我在哪里犯了一个错误? – STeN

+0

我以前可能误读了你的帖子,但也许你想检查。我认为它可能不会返回您计算所期望的密度。我没有检查过你的数学,但是如果密度是160而不是169,那么它们可能会合在一起? – Petrus

回答

8

的Galaxy Tab(7" )没有按。“T报告其真正的密度要理解这个问题,阅读下面的文章:

http://realmike.org/blog/2010/12/21/multiple-screen-sizes-with-processing-for-android/

显然,这也是三星什么时候发现他们做了银河 Tab。 Galaxy Tab拥有7英寸,1024×600的170 dpi分辨率屏幕。但是, 选项卡不会将其密度报告为“mdpi”,而会将其报告为“hdpi”,因此布局 与第二个屏幕截图完全相同。如果他们使用“mdpi”, 图标将是.28“宽,”hdpi“,他们是.42”宽 - 不是一个大的 交易,我必须承认,布局看起来更漂亮。

该文章包含一些图像,可以让您了解问题。

+1

嗨,好文章,但我们应该如何正确指定小工具大小?似乎只有在器件报告真实密度的情况下才使用dp,而不是像Galaxy-Tab这样的假密度正在做的事情...... – STeN

+0

您应该使用dp指定它。如果Galaxy Tab使用真实密度,Galaxy Tab会显示比您的物体更大的尺寸,但是三星相信这会取得更好的效果。从这篇文章中的图片来看,我同意三星!另外,请按照以下提示进行操作:http://developer.android.com/guide/practices/screens_support.html#screen-independence –

+0

好的,同意 - 无论如何,Android文档错误地说** 160dp = 1英寸**。这真是令人误解。而且,似乎dpi可能不是选择可绘制源的最佳方式,因为当使用pseduo-density(逻辑密度)时它不考虑屏幕大小 - 可能是Google未来可能会改变的东西...我是尝试** DisplayMetrics **类 - 它会返回每英寸的确切物理像素(即169 dpi)以及逻辑密度。 – STeN