有没有办法以编程方式确定设备使用哪个drawable-dpi目录?
答案 0 :(得分:1)
您应该能够使用修改后的Resources
对象创建this question about localization对象,如DisplayMetrics
所示。
再次阅读您的问题,如果您只希望获得屏幕类型而不是Ressources本身,则可以使用DisplayMetrics
填充getWindowManager().getDefaultDisplay().getMetrics(metrics);
对象,如链接示例所示,然后评估density
实例变量。
答案 1 :(得分:1)
我写这个是为了显示当前设备使用的可绘制目录的名称:
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);