Как определить разрешение экрана в "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