На самом деле, если вы хотите иметь реальное отображение 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 дисплея должно быть Density * xdpi .. но я не уверен, что это правильный способ!