How to check an Android device is HDPI screen or MDPI screen?
You can check the screen density with:
switch (getResources().getDisplayMetrics().densityDpi) {case DisplayMetrics.DENSITY_LOW: // ... break;case DisplayMetrics.DENSITY_MEDIUM: // ... break;case DisplayMetrics.DENSITY_HIGH: // ... break;case DisplayMetrics.DENSITY_XHIGH: // ... break;}
EDIT Be aware that as Android evolves, other values should be included in the switch
cases. As of this edit, this includes DisplayMetrics.DENSITY_TV
and DisplayMetrics.DENSITY_XXHIGH
. Consult the docs for the latest info; I'm not going to bother maintaining this answer.
As of 2018, you can use the below method -
public static String getDeviceDensityString(Context context) { switch (context.getResources().getDisplayMetrics().densityDpi) { case DisplayMetrics.DENSITY_LOW: return "ldpi"; case DisplayMetrics.DENSITY_MEDIUM: return "mdpi"; case DisplayMetrics.DENSITY_TV: case DisplayMetrics.DENSITY_HIGH: return "hdpi"; case DisplayMetrics.DENSITY_260: case DisplayMetrics.DENSITY_280: case DisplayMetrics.DENSITY_300: case DisplayMetrics.DENSITY_XHIGH: return "xhdpi"; case DisplayMetrics.DENSITY_340: case DisplayMetrics.DENSITY_360: case DisplayMetrics.DENSITY_400: case DisplayMetrics.DENSITY_420: case DisplayMetrics.DENSITY_440: case DisplayMetrics.DENSITY_XXHIGH: return "xxhdpi"; case DisplayMetrics.DENSITY_560: case DisplayMetrics.DENSITY_XXXHIGH: return "xxxhdpi"; }}
But as @Ted pointed always consult the official docs before using