BLUF:安卓平板电脑可能会对其屏幕密度感到困惑吗?一个 un 如何混淆它?
背景:我有两个相同的" Android平板电脑(相同的制造商,相同的型号,相同的物理屏幕尺寸,相同的分辨率)。
Tablet A自我报告密度为160dpi。平板电脑B报告213dpi。如果我使用实际像素进行布局,则两个输出看起来都相同。这告诉我他们的密度实际上是一样的。
如果我使用DP制作布局,Tablet B会将所有屏幕元素渲染得太大。我相信这样做是因为它"认为"它具有更高的屏幕密度,因此必须将屏幕元素进行缩放以进行补偿。但我不认为这样做。我认为它们是一样的。
那么......我怎样才能更改Android平板电脑用来确定其屏幕密度的值?如何将不正确的值放入那里?
对于具有不同密度的两个相同物理尺寸和相同分辨率的屏幕,它是否可能? (密度=分辨率/大小,对吧?)
具体细节: Android 5.1.1(64位) CPU:四核ARMv8处理器(VFPv4,NEON) 渲染器:Mali-400 MP2 GPU版本:OpenGL ES 2.0 内核:Linux v3.10.65
谢谢!
答案 0 :(得分:0)
此功能应该提供真正的屏幕密度,只需调试它
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";
}
}
答案 1 :(得分:0)
更多研究表明,Android用于渲染显示的屏幕密度由制造商在构建时设置在ROM中。它不是由Android以任何方式计算的,并且不必然是通过简单地将分辨率除以屏幕尺寸而获得的值。
因此,就我的问题而言,即使我的两个平板电脑上的物理屏幕密度实际上相同(使用实际像素构建的布局在两个平板电脑上显示相同的尺寸),制造商已选择将一个平板电脑设置为更高的屏幕密度。因此,Android将升级所有dp指定的布局,以补偿“更高”的密度。
为什么制造商会这样做,我仍然不知道。但为什么我的两个平板电脑显示不同的密度至少得到回应。