如何检查Android设备是HDPI屏幕还是MDPI屏幕?
density = getResources().getDisplayMetrics().density;
// return 0.75 if it's LDPI
// return 1.0 if it's MDPI
// return 1.5 if it's HDPI
// return 2.0 if it's XHDPI
// return 3.0 if it's XXHDPI
// return 4.0 if it's XXXHDPI
您可以查看屏幕密度:
switch (getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
// ...
break;
case DisplayMetrics.DENSITY_MEDIUM:
// ...
break;
case DisplayMetrics.DENSITY_HIGH:
// ...
break;
case DisplayMetrics.DENSITY_XHIGH:
// ...
break;
}
编辑注意,由于Android的发展,其他值应包括在switch
案件。在编辑时,这包括DisplayMetrics.DENSITY_TV
和DisplayMetrics.DENSITY_XXHIGH
。有关最新信息,请咨询the docs;我不打算保持这个答案。
在某些设备上(我的是Galaxy Tab3),密度和密度Dpi都会返回奇怪的值,如1.33(密度),213(密度Dpi)。所以我的解决办法是增加这些标志:
<项目类型= "布尔" 名= " is_mdpi " > [BOOL] < /件>
<项目 类型= "布尔" 名= " is_hdpi " > [bool] </item >
< item type = " bool " 名称= " is_xhdpi " > [BOOL] < /项目>
<项 类型= "布尔" 名称= " is_xxhdpi " > [BOOL] < /项目>
至4 values.xml文件,将它们放在相应的res/values- [xxx] /文件夹下。
213dpi是一个众所周知的密度,“tvdpi”:http://developer.android.com/guide/practices/screens_support.html#qualifiers – 2014-02-04 19:37:49
从上面的答案,我将它们结合在一起,创造了以下功能:
public static String getDeviceDensity(Context context){
String deviceDensity = "";
switch (context.getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
deviceDensity = 0.75 + " ldpi";
break;
case DisplayMetrics.DENSITY_MEDIUM:
deviceDensity = 1.0 + " mdpi";
break;
case DisplayMetrics.DENSITY_HIGH:
deviceDensity = 1.5 + " hdpi";
break;
case DisplayMetrics.DENSITY_XHIGH:
deviceDensity = 2.0 + " xhdpi";
break;
case DisplayMetrics.DENSITY_XXHIGH:
deviceDensity = 3.0 + " xxhdpi";
break;
case DisplayMetrics.DENSITY_XXXHIGH:
deviceDensity = 4.0 + " xxxhdpi";
break;
default:
deviceDensity = "Not found";
}
return deviceDensity;
}
现在,该设备要获得密度信息和文件夹将使用它,只需添加上述方法该活动,并添加以下行的onCreate在描述
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Log.d("Screen Density: ", Helper.getDeviceDensity(this));
}
密度值:http://developer.android.com/guide/practices/screens_support.html – esilver 2014-01-21 21:52:39
@SteD是否有可能告诉设备是什么将?例如考虑在铲斗范围中间DPI为140的情况?它是向下还是向下? – wal 2016-06-29 06:12:40
tvdpi约为1.3 – 2016-10-05 21:40:26