这就是我使用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,但我猜结果会是一样的。
这是一个知道错误,还是我做错了什么?
如果没有s8 +设备的正确像素密度信息,很难管理S8 +设备的布局。
答案 0 :(得分:0)
您需要初始化显示指标对象
你可以试试这个:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
flat density=metrics.density;
flat densityDpi=metrics.densityDpi;
答案 1 :(得分:0)
就像瑟斯曼说的那样。您的手机没有达到最大分辨率。如果您获取屏幕截图中报告的分辨率并将其除以报告的2.9并将其乘以4,则最终得出的最大分辨率为2960x1440