0

有没有办法以编程方式确定设备使用哪个 drawable-dpi 目录?

4

3 回答 3

1

您应该能够使用修改后的对象创建一个对象,如有关本地化的问题Resources中所示。DisplayMetrics


再次阅读您的问题,如果您只想获取屏幕的类型,而不是 Ressources 本身,您可以使用链接示例中所示填充您的DisplayMetrics对象,然后评估实例变量。getWindowManager().getDefaultDisplay().getMetrics(metrics);density

于 2013-08-06T23:09:01.750 回答
1

退出DisplayMetrics

我写这个来显示当前设备使用的可绘制目录的名称:

private String getDisplayDirectory() {
    String prefix = "drawable";
    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    if (metrics.densityDpi == DisplayMetrics.DENSITY_LOW)
        return prefix+"-ldpi";
    if (metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM)
        return prefix+"-mdpi";
    if (metrics.densityDpi == DisplayMetrics.DENSITY_TV)
        return prefix+"-tv";
    if (metrics.densityDpi == DisplayMetrics.DENSITY_HIGH)
        return prefix+"-hdpi";
    if (metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH)
        return prefix+"-xhdpi";
    if (metrics.densityDpi == DisplayMetrics.DENSITY_XXHIGH)
        return prefix+"-xxhdpi";
    if (metrics.densityDpi == DisplayMetrics.DENSITY_XXXHIGH)
        return prefix+"-xxxhdpi";
    return prefix;
}
于 2013-08-06T23:46:25.540 回答
0

您可以使用DisplayMetrics来确定。

DisplayMetrics metrics = getResources().getDisplayMetrics()
switch (metrics.densityDpi) {
   case DisplayMetrics.DENSITY_HIGH: {
       // Do your stuff if density is high
       break;
   }
   case DisplayMetrics.DENSITY_MEDIUM: {
       // Do your stuff if density is medium
       break;
   }
   ...
}

或者,您也可以使用以下方法获取指标:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
于 2013-08-06T23:31:02.707 回答