我正在尝试获取屏幕的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
。
非常感谢任何帮助。
答案 0 :(得分:2)
虽然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的说法:“欢迎三星将它们(设备)归类为他们想要的任何密度桶”。因此,在这种情况下,两个设备都在相同的密度桶中。