如何计算设备的像素密度(dp)?

时间:2013-10-01 10:39:42

标签: android resolution density-independent-pixel

Galaxy s4的独立像素密度是多少?

我需要它,所以我可以为该手机设置限定符sw???dp

如果你能解释如何计算它会很棒。

4 个答案:

答案 0 :(得分:13)

没有人回答这个问题: S4:每gsmarena分辨率1080 x 1920像素(~441 ppi像素密度) 公式:px = dp *(dpi / 160)来自谷歌关于"支持多个屏幕"的文章。 因此:dp = px /(dpi / 160)。所以,最短宽度(sw)= 1080 /(441/160)= 391

如此处所述:Use size and density-specific resources problems in Android app design

答案 1 :(得分:5)

Galaxy s4的密度约为441ppi,即scale factor约为441/160 = 2.75。这远远高于hdpi(1.5)xhdpi (2.0)。将你的字体xml放入 values-xxhdpi文件夹。

您还可以查看此处look here以获取更多查询。

答案 2 :(得分:5)

在这里,您可以找到如何为您想要的每台设备计算sw???dp

Application Skeleton to support multiple screen

我认为不应使用96 x 5'(屏幕尺寸),而应使用这些限定符:http://developer.android.com/design/style/devices-displays.html(160,240,320,480)。在这个Galaxy S4的情况下,你会得到很好的结果,但是如果你尝试使用Nexus4(4,7'),你将会得到sw~272而不是380,就像它应该的那样在实践中。这是您应该在公式中使用的值,您将得到正确的结果。

运行此代码段:(API 13 +)

  

int sw = getResources()。getConfiguration()。smallestScreenWidthDp;

答案 3 :(得分:3)

你总能在gsmarena中找到它。

对于其他未知手机,这里是计算dpi的公式:

dpi = ( square_root ( horizontal_pixels ^ 2 + vertical_pixels ^ 2 )) / ( screen_size )

对于galaxy s4:

  • 水平像素= 1080
  • 垂直像素= 1920
  • 屏幕尺寸= 5.0

然后

dpi = ( square_root ( 1080 ^ 2 + 1920 ^ 2 )) /  5.0

dpi = ( square_root ( 1166400 + 3686400 )) /  5.0

dpi = ( square_root ( 4852800 )) /  5.0

dpi = ( 2202.91 ) /  5.0

dpi = 440.5

dpi = 441 dpi