2015-05-21 2 views
0

Я работаю над приложением Android, и я пытаюсь понять, какой DPI - мой дисплей. Поставщик сказал, что это HDPI-дисплей, но я получаю совершенно другой результат. Это мой код:Какой ковш DPI - мой дисплей

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

String text = "Width: " + metrics.widthPixels 
     + "\nHeight: " + metrics.heightPixels 
     + "\nDpi: " + metrics.densityDpi 
     + "\nXDPI: " + metrics.xdpi 
     + "\nYDPI: " + metrics.ydpi 
     + "\nRDpi: " + (int)(metrics.density * 160f); 

И печатающее устройство следующую информацию:

Width: 320 
Height: 320 
Dpi: 160 
XDPI: 262 
YDPI: 262 
RDPI: 160 

Таким образом, кажется, что продавец рассмотреть XDPI и XDPI параметры утверждать, что дисплей является ИПЧР, но в действительности это MDPI. Я ошибаюсь?

+0

это MDPI. Какое устройство у вас есть? – Blackbelt

+0

Это не коммерческий продукт, это собственный прототип Android Wear – Raffaeu

ответ

1

Хороший способ получить ДОИ сгенерировать файл string.xml для каждой плотности.

Создание папок под названием values-mdpi, values-hdpi, values-xhdpi ... и добавление strings.xml во всех, с строкой, называемой плотностью со значением плотности (mdpi для strings.xml, расположенной в значениях -mdpi и т.д.)

затем чтение R.string.density даст вам правильную плотность

+0

Я могу подтвердить, что, используя этот подход, я возвращаю строку MDPI, поэтому поставщик использует XDPI и YDPI для продажи дисплея в качестве HDPI (260), но на самом деле является MDPI – Raffaeu

0

120dpi = ldpi 160dpi = MDPI 240dpi = ИПЧР

Так вы на MDPI

0

Как заявил joshperry Свойство metrics.density является плавающей точкой коэффициент масштабирования от исходной плотности (160dpi) , То же самое значение, в настоящее время обеспечивается metrics.densityDpi можно рассчитать

int densityDpi = (int)(metrics.density * 160f); 
Смежные вопросы