在android中以编程方式获取屏幕密度?
如何在android中以编程方式获取屏幕密度?
我的意思是:如何找到当前设备的屏幕dpi?
您可以通过DisplayMetrics结构在显示屏上获取信息:
DisplayMetrics metrics = getResources().getDisplayMetrics();
虽然Android不使用直接像素映射,但它使用少量量化的密度无关像素值,然后缩放至实际屏幕大小。 所以metrics.densityDpi属性将是一个DENSITY_xxx常数( 120 , 160 , 213 , 240 , 320 , 480或640 dpi的)。
如果您需要实际的lcd像素密度(可能用于OpenGL应用程序),则可以分别从metrics.xdpi和metrics.ydpi属性中获取水平和垂直密度。
如果您的目标是早于4的API级别metrics.density属性是来自参考密度(160dpi)的浮点比例因子。 现在可以计算metrics.densityDpi现在提供的相同值
int densityDpi = (int)(metrics.density * 160f);
这也适用于:
getResources().getDisplayMetrics().density;
这会给你:
0.75 - ldpi
1.0 - mdpi
1.5 - hdpi
2.0 - xhdpi
3.0 - xxhdpi
4.0 - xxxhdpi

ref:密度
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch(metrics.densityDpi) {
case DisplayMetrics.DENSITY_LOW:
break;
case DisplayMetrics.DENSITY_MEDIUM:
break;
case DisplayMetrics.DENSITY_HIGH:
break;
}
这将适用于API级别4和更高。
链接地址: http://www.djcxy.com/p/67685.html上一篇: getting the screen density programmatically in android?
