Как получить плотность экрана?

Как получить плотность экрана? Я пробовал использовать следующий код. Я получил плотность как 1.0 . Я сменил эмулятор на HVGA , QVGA и WVGA но я получаю тот же результат.

 int density = getResources().getDisplayMetrics().density; 

Как получить фактическую плотность экрана моего эмулятора.

Solutions Collecting From Web of "Как получить плотность экрана?"

Проверьте этот код,

 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int screenDensity = metrics.densityDpi; 

Если у вас есть доступ к контексту, а не к объекту Activity, вы не сможете использовать getWindowManager ().

Мне пришлось использовать такой подход:

 DisplayMetrics metrics = new DisplayMetrics(); WindowManager wm = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE); wm.getDefaultDisplay().getMetrics(metrics); 

Попробуй это.

http://www.androidwarriors.com/2016/01/how-to-find-different-devices-screen.html

 public static int differentDensityAndScreenSize(Context context) { int value = 20; String str = ""; if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) { switch (context.getResources().getDisplayMetrics().densityDpi) { case DisplayMetrics.DENSITY_LOW: str = "small-ldpi"; value = 20; break; case DisplayMetrics.DENSITY_MEDIUM: str = "small-mdpi"; value = 20; break; case DisplayMetrics.DENSITY_HIGH: str = "small-hdpi"; value = 20; break; case DisplayMetrics.DENSITY_XHIGH: str = "small-xhdpi"; value = 20; break; case DisplayMetrics.DENSITY_XXHIGH: str = "small-xxhdpi"; value = 20; break; case DisplayMetrics.DENSITY_XXXHIGH: str = "small-xxxhdpi"; value = 20; break; case DisplayMetrics.DENSITY_TV: str = "small-tvdpi"; value = 20; break; default: str = "small-unknown"; value = 20; break; } } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) { switch (context.getResources().getDisplayMetrics().densityDpi) { case DisplayMetrics.DENSITY_LOW: str = "normal-ldpi"; value = 82; break; case DisplayMetrics.DENSITY_MEDIUM: str = "normal-mdpi"; value = 82; break; case DisplayMetrics.DENSITY_HIGH: str = "normal-hdpi"; value = 82; break; case DisplayMetrics.DENSITY_XHIGH: str = "normal-xhdpi"; value = 90; break; case DisplayMetrics.DENSITY_XXHIGH: str = "normal-xxhdpi"; value = 96; break; case DisplayMetrics.DENSITY_XXXHIGH: str = "normal-xxxhdpi"; value = 96; break; case DisplayMetrics.DENSITY_TV: str = "normal-tvdpi"; value = 96; break; default: str = "normal-unknown"; value = 82; break; } } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) { switch (context.getResources().getDisplayMetrics().densityDpi) { case DisplayMetrics.DENSITY_LOW: str = "large-ldpi"; value = 78; break; case DisplayMetrics.DENSITY_MEDIUM: str = "large-mdpi"; value = 78; break; case DisplayMetrics.DENSITY_HIGH: str = "large-hdpi"; value = 78; break; case DisplayMetrics.DENSITY_XHIGH: str = "large-xhdpi"; value = 125; break; case DisplayMetrics.DENSITY_XXHIGH: str = "large-xxhdpi"; value = 125; break; case DisplayMetrics.DENSITY_XXXHIGH: str = "large-xxxhdpi"; value = 125; break; case DisplayMetrics.DENSITY_TV: str = "large-tvdpi"; value = 125; break; default: str = "large-unknown"; value = 78; break; } } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) { switch (context.getResources().getDisplayMetrics().densityDpi) { case DisplayMetrics.DENSITY_LOW: str = "xlarge-ldpi"; value = 125; break; case DisplayMetrics.DENSITY_MEDIUM: str = "xlarge-mdpi"; value = 125; break; case DisplayMetrics.DENSITY_HIGH: str = "xlarge-hdpi"; value = 125; break; case DisplayMetrics.DENSITY_XHIGH: str = "xlarge-xhdpi"; value = 125; break; case DisplayMetrics.DENSITY_XXHIGH: str = "xlarge-xxhdpi"; value = 125; break; case DisplayMetrics.DENSITY_XXXHIGH: str = "xlarge-xxxhdpi"; value = 125; break; case DisplayMetrics.DENSITY_TV: str = "xlarge-tvdpi"; value = 125; break; default: str = "xlarge-unknown"; value = 125; break; } } // The Toast will show the Device falls in Which Categories. Toast.makeText(MainActivity.this, ""+str, Toast.LENGTH_SHORT).show(); return value; } 
 DisplayMetrics displaymetrics = new DisplayMetrics(); float density= getResources().getDisplayMetrics().density; if(density==1.0){ **//This is for mdpi** params.width = 70; params.height=70; dynamicSeekBar.setLayoutParams(params); // Toast.makeText(this, "1.0", Toast.LENGTH_LONG).show(); }else if(density==1.5){ **//This is for hdpi** params.width =110; params.height=110; dynamicSeekBar.setLayoutParams(params); // Toast.makeText(this, "1.5", Toast.LENGTH_LONG).show(); }else if(density==2.0){ **//This is for xhdpi** params.width = 177; params.height=175; dynamicSeekBar.setLayoutParams(params); // Toast.makeText(this, "2.0", Toast.LENGTH_LONG).show(); }