三星Galaxy S8+:设备指标给出了错误的设备屏幕像素密度

3
这是我使用Android Studios获取屏幕密度的方法。
float density = getResources().getDisplayMetrics().density;

根据设备规格,S8+具有4.0密度值,属于xxxhdpi类别。
请参考此网站https://material.io/devices/,这里附上了一个参考截图here
但是上述代码返回的值为2.9,看起来非常不正确check here
尝试使用densityDpi,但它也返回xxhdpi而不是xxxhdpi。
int densityDpi = context.getResources().getDisplayMetrics().densityDpi;

上述代码在其他设备上运行良好,已在 OnePlus 5T、Nexus 6P、Redmi Note 4、Moto g4+ 等设备上进行了测试...在 Galaxy s8+ 上遇到问题,尚未测试 Galaxy s8,但我猜结果会相同。
这是一个已知的 Bug 吗,还是我做错了什么?
在没有正确的 S8+ 设备像素密度信息的情况下,管理 S8+ 设备的布局变得困难。

这与在S8上更改分辨率有关,不是吗?请参阅:http://www.techradar.com/news/how-to-change-the-samsung-galaxy-s8-and-galaxy-s7-screen-resolution - SurfMan
即使将分辨率调整到最大,结果仍然相同...没有运气。 - GauRavK
1
你最终解决了这个问题吗? - SilentByte
2个回答

0
就像Surfman所说的一样。您的手机不是以最大可能的分辨率显示。如果您将截屏中报告的分辨率除以报告的2.9并乘以4,您最终会得到大约2960x1440的最大分辨率。

0

您需要初始化显示度量对象

您可以尝试这样做:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
flat density=metrics.density;
flat densityDpi=metrics.densityDpi;

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