How to determine device screen size category (small, normal, large, xlarge) using code? How to determine device screen size category (small, normal, large, xlarge) using code? android android

How to determine device screen size category (small, normal, large, xlarge) using code?


You can use the Configuration.screenLayout bitmask.

Example:

if ((getResources().getConfiguration().screenLayout &     Configuration.SCREENLAYOUT_SIZE_MASK) ==         Configuration.SCREENLAYOUT_SIZE_LARGE) {    // on a large screen device ...}


The code below fleshes out the answer above, displaying the screen size as a Toast.

//Determine screen sizeif ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {    Toast.makeText(this, "Large screen", Toast.LENGTH_LONG).show();}else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {    Toast.makeText(this, "Normal sized screen", Toast.LENGTH_LONG).show();}else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {    Toast.makeText(this, "Small sized screen", Toast.LENGTH_LONG).show();}else {    Toast.makeText(this, "Screen size is neither large, normal or small", Toast.LENGTH_LONG).show();}

This code below displays the screen density as a Toast.

//Determine densityDisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metrics);int density = metrics.densityDpi;if (density == DisplayMetrics.DENSITY_HIGH) {    Toast.makeText(this, "DENSITY_HIGH... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();}else if (density == DisplayMetrics.DENSITY_MEDIUM) {    Toast.makeText(this, "DENSITY_MEDIUM... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();}else if (density == DisplayMetrics.DENSITY_LOW) {    Toast.makeText(this, "DENSITY_LOW... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();}else {    Toast.makeText(this, "Density is neither HIGH, MEDIUM OR LOW.  Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();}


Jeff Gilfelt's answer as a static helper method:

private static String getSizeName(Context context) {    int screenLayout = context.getResources().getConfiguration().screenLayout;    screenLayout &= Configuration.SCREENLAYOUT_SIZE_MASK;    switch (screenLayout) {    case Configuration.SCREENLAYOUT_SIZE_SMALL:        return "small";    case Configuration.SCREENLAYOUT_SIZE_NORMAL:        return "normal";    case Configuration.SCREENLAYOUT_SIZE_LARGE:        return "large";    case 4: // Configuration.SCREENLAYOUT_SIZE_XLARGE is API >= 9        return "xlarge";    default:        return "undefined";    }}