Android:以编程方式获取res drawable- name

时间:2013-08-06 23:03:43

标签: android resources drawable

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

3 个答案:

答案 0 :(得分:1)

您应该能够使用修改后的Resources对象创建this question about localization对象,如DisplayMetrics所示。


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

答案 1 :(得分: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;
}

答案 2 :(得分: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);