android – SPH-L710(Sprint Galaxy S III)运行4.4.2误报xdpi和ydpi

前端之家收集整理的这篇文章主要介绍了android – SPH-L710(Sprint Galaxy S III)运行4.4.2误报xdpi和ydpi前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们最近注意到一个数据异常,因为许多设备通过DisplayMetrics误报了他们的xdpi和ydpi.

作为一个具体的例子,运行4.4.2的所有SPH-L710 Sprint Galaxy S III设备报告的xdpi和ydpi为~160.分辨率为1280×720,这将测量到~9英寸的屏幕尺寸,显然不是这种情况.在4.4.2之前,该设备模型分别正确报告其xdpi和ydpi:~304和~306.

我们通过DisplayMetrics访问此信息,如下所示:

DisplayMetrics dm = getResources().getDisplayMetrics();
xdpi = dm.xdpi;
ydpi = dm.ydpi;

有没有人注意到这些指标是不一致/不可靠的?有更准确的方法来访问这些信息吗?

编辑:我发现有关xdpi / ydpi不准确的this post. Romain和Dianne似乎都承认这个问题 – 因此DisplayMetrics文档没有记录这些不可靠的属性这一事实对我来说似乎是不负责任的.

@H_502_13@解决方法
从API 17开始,您可以调用getRealMetrics以获得更准确的结果.
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(dm);

xdpi = dm.xdpi;
ydpi = dm.ydpi;

From Display documentation

public void getRealMetrics (DisplayMetrics outMetrics)

Added in API level 17 Gets display metrics based on the real size of
this display.

The size is adjusted based on the current rotation of the display.

The real size may be smaller than the physical size of the screen when
the window manager is emulating a smaller display (using adb shell am
display-size).

Parameters outMetrics A DisplayMetrics object to receive the metrics.

原文链接:https://www.f2er.com/android/318059.html

猜你在找的Android相关文章