Как правильно рассчитать диагональ устройства Android? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь вычислить диагональ устройства Android, но получаю неправильные результаты.

Я пишу:

fun getScreenInches(displayMetrics: DisplayMetrics): Float {
    return hypot( displayMetrics.widthPixels / displayMetrics.xdpi, displayMetrics.heightPixels * displayMetrics.ydpi)
}

Прежде чем я получу метрики:

private fun Activity.getMetrics() = DisplayMetrics().apply {
        windowManager.defaultDisplay.getRealMetrics(this)
    }

И я называю getScreenInches() таким образом:

getScreenInches(activity.getMetrics())

Проблема в том, что мой результат больше, чем я ожидал.

Я получаю ~ 8,5 дюйма для 7-дюймового устройства и ~ 9,5 дюйма для 8-дюймового устройства.

Я отладил свой код, и я понял, что displayMetrics.widthPixels и displayMetrics.heightPixels полностью правильно .

Так что я не уверен displayMetrics.xdpi и displayMetrics.ydpi. Похоже, что эти значения приближены к некоторым табличным значениям и не показывают реальную плотность.

Что мне делать или читать, чтобы моя функция возвращала правильные результаты?

1 Ответ

0 голосов
/ 18 октября 2019
Density = sqrt((wp * wp) + (hp * hp)) / di

Где wp обозначает разрешение по ширине в пикселях, hp обозначает разрешение по высоте в пикселях, а di обозначает размер по диагонали в дюймах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...