Насправді, якщо ви хочете мати реальний дисплей dpi, відповідь знаходиться десь посередині, якщо ви запитуєте метричні показники відображення:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int dpiClassification = dm.densityDpi;
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;
densityDpi * 160 дасть вам значення / пропозицію, яку щільність ви повинні використовувати
0.75 - ldpi - 120 dpi
1.0 - mdpi - 160 dpi
1.5 - hdpi - 240 dpi
2.0 - xhdpi - 320 dpi
3.0 - xxhdpi - 480 dpi
4.0 - xxxhdpi - 640 dpi
як зазначено в попередніх дописах
але dm.xdpi
не дасть вам завжди РЕАЛЬНІ dpi даного дисплея: Приклад:
Device: Sony ericsson xperia mini pro (SK17i)
Density: 1.0 (e.g. suggests you use 160dpi resources)
xdpi: 193.5238
Real device ppi is arround 193ppi
Device: samsung GT-I8160 (Samsung ace 2)
Density 1.5 (e.g. suggests you use 240dpi resources)
xdpi 160.42105
Real device ppi is arround 246ppi
тому, можливо, справжній dpi дисплея повинен бути Щільність * xdpi .. але я не впевнений, чи правильно це зробити!
getDisplayMetrics().xdpi
, що має повернути справжній dpi пристрою. Зауважте, що це значення не встановлюється правильно на різних пристроях виробниками, тому ви просто не можете їх використовувати . Сумно, але правда: інформації про справжній dpi немає . Джерело: groups.google.com/d/msg/android-developers/g56jV0Hora0/…