основы устройства-независимых пикселей - PullRequest
6 голосов
/ 16 января 2011

Я полностью смущен провалами на Android.

Из справки я понимаю, что база для значений dp составляет 160. Итак, не должно ли 80dp по ширине равняться виду с шириной 50% экрана? На моем Nexus One ширина в dp составляет около 300 dp, как кажется.

Что мне здесь не хватает?

спасибо заранее

Ответы [ 4 ]

16 голосов
/ 17 января 2011

"dp" == "Плотно-независимые пиксели" (по этой же причине его ранее называли "dip", хотя я предпочитаю использовать "dp" в наши дни.)

Думайте об этом, как о других единицах - «дюймах» (дюймах), «мм» (миллиметрах) и т. Д. Это позволяет вам указывать размер, который масштабируется в зависимости от плотности экрана.

Мы определяем mdpi как базовую плотность, так что «10dp» на экране mdpi даст ровно 10 пикселей. На экране hdpi это приведет к 15 пикселям, потому что hdpi - 1.5 * mdpi.

Обратите внимание, что хотя константы для различных плотностей аналогичны DPI (mdpi равно 160 и т. Д.), Плотность равна , а не точно DPI. Это абстрактный коэффициент масштабирования, который корректирует экранное dpi, но не пытается точно его отобразить. (Вы бы использовали «in», «mm» и т. Д. Для точных размеров, но 99,9% - это не то, что вам нужно, поэтому придерживайтесь «dp».) Это значительно упрощает жизнь всем, потому что вам не нужно иметь дело со многими Android устройства имеют немного различное количество места для своего пользовательского интерфейса, потому что у каждого из них несколько разные DPI. Кроме того, производители устройств могут выбирать плотность своего устройства для достижения желаемого пользовательского интерфейса - например, вкладка Samsung использует плотность, которая на справедливую величину больше фактического DPI, что в результате приводит к увеличению общего пользовательского интерфейса.

5 голосов
/ 16 января 2011

160 точек на дюйм .Так что 80dp будет примерно 1/2 дюйма, примерно.

2 голосов
/ 16 января 2011

Я не совсем понимаю ваш вопрос, но я предлагаю вам взглянуть на это, если вы еще этого не сделали.

http://developer.android.com/guide/practices/screens_support.html

пикселей = dps * (плотность /160)

1 голос
/ 15 апреля 2017

Плотно-независимые пиксели (сокращенно: dp) - это виртуальные пиксельные единицы, которые будут определены во время выполнения вашего приложения.

Formala: 1 dp = 1 пиксель на экране 160 dpi. Так что 160 dpi - базовая плотность для системы.

Преобразование единиц dp в пиксели экрана довольно простое. Фактические пиксели устройства (px) = dp (1) * (dpi (устройства) / 160 (базовая линия)) Для простоты: px = dp * (dpi / 160)

Пример: Если ваше приложение запускает устройство с разрешением 240 т / д, то 1 дп соответствует 1,5 фактическим пикселям устройства.

Вывод: Dp автоматически обрабатывает любое масштабирование на большие или меньшие устройства. Время, когда вы жестко закодировали пиксели, прошло. DP обеспечивает правильное масштабирование на экранах разной плотности.

...