有没有办法以编程方式确定设备使用哪个 drawable-dpi 目录?
问问题
835 次
3 回答
1
您应该能够使用修改后的对象创建一个对象,如有关本地化的问题Resources
中所示。DisplayMetrics
再次阅读您的问题,如果您只想获取屏幕的类型,而不是 Ressources 本身,您可以使用链接示例中所示填充您的DisplayMetrics
对象,然后评估实例变量。getWindowManager().getDefaultDisplay().getMetrics(metrics);
density
于 2013-08-06T23:09:01.750 回答
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;
}
于 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 回答