如何获得屏幕DPI

时间:2011-11-18 18:08:01

标签: android

我正在尝试获取屏幕的dpi,但到目前为止它无法正常工作。我试过了:

    DisplayMetrics dm = new DisplayMetrics();
    mainContext.getWindowManager().getDefaultDisplay().getMetrics(dm);
    SCREEN_DPI = dm.densityDpi;

但是在三星Galaxy Tab 10.1和三星Galaxy S I9000上,SCREEN_DPI等于160.我也试过了SCREEN_DPI = dm.density,但我得到两个案例的值1.0

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

重复this question

  

虽然Android不使用直接像素映射,但它使用了少数几个   量化的密度独立像素值然后将其缩放到   实际屏幕尺寸。因此密度属性将是其中之一   常数(120,160或240 dpi)。

     

如果您需要实际密度(可能是OpenGL应用程序),您可以获得   它来自水平和垂直的xdpi和ydpi属性   密度分别。

答案 1 :(得分:1)

请尝试getRealMetrics()

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);

此API已在API 17中正式添加,但在我的有限测试中,即使在4.0设备上也能正常使用,因此在此之前它可能是一个隐藏的API。

官方文档here,但似乎有更多理由认为其他API没有达到您所期望的效果,而不是暗示的文本。

答案 2 :(得分:0)

根据@CommonsWare的说法:“欢迎三星将它们(设备)归类为他们想要的任何密度桶”。因此,在这种情况下,两个设备都在相同的密度桶中。