Почему соотношение «dp-to-pixel» меняется в зависимости от плотности экрана, но не обязательно в прямой пропорции - PullRequest
0 голосов
/ 28 марта 2012

Я немного обеспокоен тем, что я читаю здесь , что подразумевает отсутствие надежной формулы для вычисления px на основе dp и плотности экрана (и наоборот):

дп: Плотно-независимые пиксели - абстрактная единица измерения, основанная на физической плотности экрана. Эти единицы относятся к экрану с разрешением 160 точек на дюйм (точек на дюйм), на котором 1dp приблизительно равен 1px. При работе на экране с более высокой плотностью количество пикселей, используемых для рисования 1dp, увеличивается с коэффициентом, соответствующим dpi экрана. Аналогично, когда на экране с более низкой плотностью, количество пикселей, используемых для 1dp, уменьшается. Отношение dp к пикселю будет изменяться в зависимости от плотности экрана, но не обязательно в прямой пропорции. Использование dp-единиц (вместо px) - простое решение для изменения размеров вида в макете. правильно для разных плотностей экрана. Другими словами, он обеспечивает согласованность для реальных размеров ваших элементов пользовательского интерфейса на разных устройствах.

Я думал, что мы всегда можем использовать следующую формулу (объяснено здесь ): px = dp * (dpi / 160)

Однако показания в этого вопроса , кажется, подчеркивают случай, когда указание размеров в dp не гарантирует фиксированный воспринимаемый размер для всех устройств.

Каково реальное значение предложения, выделенного жирным шрифтом? Нужно ли нам использовать mm, чтобы быть уверенным, что размер остается одинаковым ??

1 Ответ

1 голос
/ 28 марта 2014

Я думал, что мы всегда можем использовать следующую формулу (объясняется здесь): px = dp * (dpi / 160)

Эту формулу всегда можно использовать для преобразования между пикселями и dp,Просто убедитесь, что вы используете DisplayMetrics.densityDpi в качестве значения для dpi в формуле.

Однако показания в этом вопросе, кажется, подчеркивают случай, когда указание размеров в dp делаетне гарантирует фиксированный воспринимаемый размер на устройствах.

Да, это правда, что определенный dp не гарантирует фиксированный воспринимаемый размер на устройствах.Тем не менее, он гарантирует одинаковый воспринимаемый размер на разных устройствах.Причина этого заключается в том, что на некоторых устройствах плотность Dpi (область плотности) отличается от физического dpi устройства.См. мой ответ на вопрос, который вы связали, для получения более подробной информации.

Отношение dp к пикселю будет изменяться в зависимости от плотности экрана, но не обязательно в прямой пропорции

Здесь я думаю, что они имеют в виду фактическую физическую плотность экрана, когда говорят «плотность экрана», а не то, к какой плотности принадлежит телефон.

Например, устройство с физическим dpi270 будет принадлежать «высокой» (240) области плотности и иметь отношение dp к пикселям 240/160 = 1,5

. Другое устройство с физическим dpi 290 будет принадлежать «xhigh» (320) плотности и имеют отношение dp к пикселям 320/160 = 2

. При сравнении этих устройств физическая плотность экрана увеличилась на 7% (270 -> 290), в то время какСоотношение dp-to-pixel увеличилось на 33% (1,5 -> 2), поэтому они не являются прямой пропорцией между ними.

Нужно ли использовать мм, чтобы быть уверенным, чтобы сохранить то же самоевоспринимаемый размер ??

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

Также важно помнить, что есть устройства, в которых единицы мм и дюймы сломаны, для получения дополнительной информации об этом см. Вопрос Почему Lint отображает предупреждение при использовании единиц измерения в (дюймах) или мм (миллиметрах)?

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