Рассчитать PPI устройства Android

Как рассчитать PPI устройства Android. Наиболее конкретно планшеты Android. Обратите внимание, что я хочу рассчитать PPI устройства, а не DPI.

3 ответа

Это просто, как один-два-три =) Давайте рассчитаем PPI для Nexus 5, например.

float LCD_Diagonal = 4.95f;
int screenHeightPx = 1920;
int screenWidthPx  = 1080;
float PPI = (float)Math.sqrt((double)(screenWidthPx*screenWidthPx + screenHeightPx*screenHeightPx))/LCD_Diagonal;
Log.e(TAG, "display_page_screen_ppi: " + String.format(Locale.getDefault(),"%d %s", Math.round(PPI), "ppi"));

В результате мы имеем 445 ppi это верно в соответствии со спецификациями.

PPI

Плотность экрана указывается как число пикселей на дюйм (PPI) и является количеством пикселей, которое умещается в дюйм. Чем выше число, тем четче изображения на дисплее, поэтому потребители считают, что высокое значение PPI является преимуществом при покупке устройства. Иногда эта цифра указывается как число точек на дюйм, DPI, хотя использование DPI вводит в заблуждение, поскольку оно связано с терминологией печати, и оно может относиться к чувствительности датчиков в цифровых сканерах и цифровых камерах. Для экранов Android, когда дело доходит до PPI против DPI, используйте PPI и оставляйте DPI для обозначения принтеров, где это действительно другое измерение (поскольку точки, необходимые для получения высококачественных изображений на бумаге, имеют большую плотность).

Показатель PPI для экрана может быть рассчитан с учетом разрешения (количество пикселей x и y) и размера (диагональное измерение видимой области) экрана. Используйте теорему Пифагора для вычисления количества пикселей в диагонали, а затем разделите результат на размер экрана. т.е. PPI=(квадратный корень из x^2 + y^2)/ размер экрана

Второй вариант

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

 // Display device width and height in pixels
     screenHeightpx = dm.heightPixels;
     screenWidthpx  = dm.widthPixels;

Для этого вам нужно взять diaplaymatrix.

DisplayMetrics dm = getResources().getDisplayMetrics();
int height = dm.heightPixels;
int width = dm.widthPixels;
Другие вопросы по тегам