在android中以编程方式获取屏幕密度?

如何在android中以编程方式获取屏幕密度?

我的意思是:如何找到当前设备的屏幕dpi?


您可以通过DisplayMetrics结构在显示屏上获取信息:

DisplayMetrics metrics = getResources().getDisplayMetrics();

虽然Android不使用直接像素映射,但它使用少量量化的密度无关像素值,然后缩放至实际屏幕大小。 所以metrics.densityDpi属性将是一个DENSITY_xxx常数( 120160213240320480640 dpi的)。

如果您需要实际的lcd像素密度(可能用于OpenGL应用程序),则可以分别从metrics.xdpimetrics.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?

下一篇: Separation of logic and UI