Android平板电脑对其屏幕密度感到困惑
BLUF:Android平板电脑可能会对其屏幕密度感到困惑吗?一个un如何混淆呢?Android平板电脑对其屏幕密度感到困惑
背景:我有两个“相同”的Android平板电脑(相同的制造商,相同的型号,相同的物理屏幕尺寸,相同的分辨率)。
平板电脑自我报告密度为160dpi。平板电脑B报告213dpi。如果我使用实际像素进行布局,则两个输出看起来都是相同的。这告诉我他们的密度实际上是一样的。
如果我使用DP进行布局,则平板B呈现所有屏幕元素太大。我相信这是因为它“认为”它具有更高的屏幕密度,因此必须缩放屏幕元素以补偿。但我不认为它确实如此。我认为他们是一样的。
因此......我如何更改Android平板电脑用于确定其屏幕密度的值?错误的价值是如何放在那里的?
这两个屏幕的物理尺寸和分辨率是不同的吗? (密度=分辨率/大小,是吗?)
具体细节: 的Android 5.1.1(64位) CPU:四核ARMv8处理器(VFPv4,氖) 渲染:马里-400 MP2 GPU版本: OpenGL ES 2.0 内核:Linux v3.10.65
谢谢!
这个功能应该给你真正的屏幕像素密度,只是对它进行调试
public static String getDeviceResolution(Context context) {
int density = context.getResources().getDisplayMetrics().densityDpi;
switch (density) {
case DisplayMetrics.DENSITY_MEDIUM:
return "MDPI";
case DisplayMetrics.DENSITY_HIGH:
return "HDPI";
case DisplayMetrics.DENSITY_LOW:
return "LDPI";
case DisplayMetrics.DENSITY_XHIGH:
return "XHDPI";
case DisplayMetrics.DENSITY_TV:
return "TV";
case DisplayMetrics.DENSITY_XXHIGH:
return "XXHDPI";
case DisplayMetrics.DENSITY_XXXHIGH:
return "XXXHDPI";
default:
return "Unknown";
}
}
更多的研究表明,该Android使用呈现显示画面的密度在ROM通过在构建时制造商设定。它不是由Android以任何方式计算的,它是而不是必须通过简单地将分辨率除以屏幕大小而获得的值。
因此,就我的问题而言,即使我的两台平板电脑的物理屏幕密度实际上相同(使用实际像素构建的布局在两个平板电脑上显示的尺寸都相同),但制造商已选择将一台平板电脑以更高的屏幕密度。因此,Android将升级所有dp指定的布局以补偿“更高”的密度。
为什么制造商会这样做,我还是不知道。但为什么我的两种片剂显示不同的密度至少得到了回答。
这给了我与AnTuTu报告相同的结果(160dpi和213dpi)。 (我确信AnTuTu使用类似的调用来获得它的值。)问题仍然存在:如果两台显示器具有相同的物理尺寸和相同的分辨率,它们甚至可以具有不同的密度? – xpofer