在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?