gpt4 book ai didi

Android:DisplayMetrics densityDpi 在 Root设备上返回零

转载 作者:行者123 更新时间:2023-11-29 20:56:20 26 4
gpt4 key购买 nike

小问题

DisplayMetrics.densityDpi 在 root 设备上似乎为零。

长题

我在我的应用中使用了以下代码:

public static int getIconSize(Activity activity) {

int size;

DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

switch (metrics.densityDpi) {
case DisplayMetrics.DENSITY_LOW:
size = 36;
break;
case DisplayMetrics.DENSITY_MEDIUM:
size = 48;
break;
case DisplayMetrics.DENSITY_TV:
size = 64;
break;
case DisplayMetrics.DENSITY_HIGH:
size = 72;
break;
case DisplayMetrics.DENSITY_XHIGH:
size = 96;
break;
case DisplayMetrics.DENSITY_400:
size = 120;
break;
case DisplayMetrics.DENSITY_XXHIGH:
size = 144;
break;
case DisplayMetrics.DENSITY_560:
size = 168;
break;
case DisplayMetrics.DENSITY_XXXHIGH:
size = 192;
break;
default:
size = (int) (metrics.densityDpi * (3/10));
}
return size;
}

我用它来缩放我的应用程序在运行时生成的图标以及缩放我从其他应用程序获得的图标,因为它们的大小并不总是正确的。

这很好用,但在(某些)root 设备上它似乎失败了。 Size 返回为零,因此从代码中我们可以得出结论,metrics.densityDpi 必须等于零。 (我没有 root 手机来测试这个)

我查看了 <supports-screens> list 的一部分,但默认值似乎是我需要的。

有谁知道发生这种情况的原因以及可能的修复方法吗?

谢谢

最佳答案

似乎已获得 root 权限的手机并不总是返回 densityDpi 的值。我通过在我的问题中的代码末尾添加这个来解决这个问题。密度似乎返回正确。

    if (size == 0) {
size = (int) (metrics.density * 48);
}

关于Android:DisplayMetrics densityDpi 在 Root设备上返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com