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

6

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

我需要它来为那部手机添加一个限定符sw???dp

如果您能解释如何计算它,那就太好了。


请查看我在此处的答案:http://stackoverflow.com/questions/36820746/multi-screen-for-mobiles-in-android/36821546#36821546 - mehrdad khosravi
4个回答

16
没有人回答这个问题: S4:分辨率为1080 x 1920像素(~441 ppi像素密度)每个gsmarena 公式:px = dp *(dpi / 160)来自Google有关“支持多个屏幕”的文章。 因此:dp = px /(dpi / 160)。 因此,最短宽度(sw)= 1080 /(441/160)= 391 正如在这里也声明的那样:在Android应用程序设计中使用大小和密度特定资源的问题

谢谢您!感谢您实际回答问题,而不仅仅提供数学方程式! - behelit

5

Galaxy s4的像素密度约为~441ppi,即比例因子大约为441/160=2.75。这比hdpi(1.5)xhdpi (2.0)高得多。请将您的字体XML放在values-xxhdpi文件夹中。

如需进一步了解,请查看此处


5

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

应用程序骨架来支持多个屏幕

我认为,与其使用 96x5'(屏幕尺寸),不如使用这些限定符: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

您可以在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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接