Android平板电脑对其屏幕密度感到困惑

时间:2017-10-09 11:32:57

标签: android android-layout

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

谢谢!

2 个答案:

答案 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指定的布局,以补偿“更高”的密度。

为什么制造商会这样做,我仍然不知道。但为什么我的两个平板电脑显示不同的密度至少得到回应。