Как определить разрешение экрана в "DP"?
Сейчас я работаю над приложением, основанным на Galaxy S. Я знаю, что Galaxy S имеет ширину 480 пикселей и высоту 800 пикселей, но сколько в DP?
Давайте скажем, если я хочу иметь два макета рядом, я буду устанавливать их в 240 пикселей. Но как узнать, какое значение я должен использовать в DP-модуле?
Ответы
Ответ 1
Преобразование dip-единиц в пиксели экрана просто: пиксели = провалы * (плотность/160). Например, на экране с разрешением 240 точек на дюйм 1 dip будет равен 1,5 физическим пикселям. Использование dip-модулей для определения пользовательского интерфейса приложения настоятельно рекомендуется, чтобы обеспечить правильное отображение вашего пользовательского интерфейса на разных экранах.
Найдено: http://developer.android.com/guide/practices/screens_support.html
[править]
Я просто должен был это использовать. Использование DisplayMetrics.density
возвращает только 0,75, 1 и 1,5. Вместо этого используйте DisplayMetrics.densityDpi
или измените математику на pixels = dips * DisplayMetrics.density
Ответ 2
Что я узнал, так это то, что DP
- это совсем не о разрешении, а о размере экрана, потому что он основан на базовой линии 160dpi. Простым способом расчета будет: ScreenSizeInInches
* 160.
В вашем случае:
Ширина в дюймах = 480px/(240px/inch)
= 2 inches
Высота в дюймах = 800px/(240px/inch)
= 10/3 inches
Проверьте: sqrt(sqr(2) + sqr(10/3))
~ = 4 inches
, размер галактики S.
Таким образом, размер в dp равен (2 * 160) x (10/3 * 160)
= 320dp x 533.3dp