Путаница с разрешением, аспектами экрана в Android

Я задаю этот вопрос после длительного чтения. Я всегда слышал, что dpi для принтеров, но когда дело доходит до экрана, они также говорят о dpi. Они имеют в виду ppi?

Теперь, что такое разрешение, для меня это количество пикселей, которое может отображать каждое измерение, например. 800x600 означает 800 пикселей по ширине и 600 пикселей по высоте, но в некоторых местах я вижу, что они ссылаются на разрешение как dpi.

Я пытаюсь хорошо понять эту концепцию, потому что она очень важна для Android, как в этом статья,

Например, скажем, значок должен иметь размер 0,5 x 0,5 дюйма при отображении на экране. Затем изображение должно быть создано с максимальной поддерживаемой плотностью или в виде масштабируемой векторной графики. Лучшей практикой является поддержка максимальной плотности, которая в настоящее время составляет xxhdpi при 480 dpi. При разрешении 480 dpi изображение размером 0,5 x 0,5 дюйма преобразуется в изображение размером 240 x 240 пикселей.

Так что на самом деле это означает dpi как ppi, если я правильно понимаю?

До сих пор я понял, что разные пиксели могут отображать разное количество пикселей. Вот почему мы не используем пиксели в качестве единицы измерения. Вместо этого мы используем dp, где dp — это один пиксель на устройстве с разрешением 160 dpi (опять же путаница с dpi и ppi).

Может ли кто-нибудь прояснить эту большую путаницу или направить меня к статье, которая может ее прояснить.


person Noor    schedule 25.04.2014    source источник


Ответы (2)


Приятель, разрешение 800 X 600 означает, что экран имеет 480 000 пикселей, которые будут использоваться для рендеринга экрана (это часто путают с размерами дисплея). DPI или PPI означает количество точек/точек на дюйм, это мера плотности экрана.

Таким образом, только с учетом разрешения нельзя определить фактическую длину дисплея, если также не доступен параметр плотности. Таким образом, разрешение 800 X 600 имеет 480 000 пикселей, а разрешение этого устройства составляет 480 точек на дюйм.

Итак, ширина экрана

= Количество пикселей по ширине/плотности

= 800/480

= 1,67 дюйма

Так же,

Высота = 600/480 = 1,25 дюйма

и если устройство с разрешением 800X600 имеет плотность 160 dpi, его размеры будут сильно различаться. Следующие расчеты позволяют рассчитать высоту/ширину 800X600 при разрешении 160 dpi. Сравните эти два значения с расчетами выше 480 dpi.

Ширина экрана = Кол-во пиксельных точек по его ширине/Плотность

= 800/160

= 5,0 дюймов

Так же,

Высота = 600/160 = 3,75 дюйма

Это та самая причина, по которой масштабирование изображений для наилучшего соответствия экрану является такой сложной проблемой в среде Android с фрагментами. Тем не менее, я люблю Android!

Надеюсь это поможет! и любой, у кого есть что добавить/удалить.изменить к этому ответу, приветствуется.

person Parth Kapoor    schedule 25.04.2014

  1. dpi (точек на дюйм) == ppi (пикселей на дюйм)
  2. Вы также говорите о DisplayMetrics.density, который дает вам множитель для dp единицы измерения.
  3. Также есть DisplayMetrics.scaledDensity, который также учитывает выбранный пользователем размер текста.

Проще говоря, dp единица предназначена для того, чтобы дать вам некоторую уверенность в размере ваших объектов на экране. 160dp должно соответствовать одному дюйму на любом экране. Для этого вам нужно умножить размер на DisplayMetrics.density или DisplayMetrics.scaledDensity.

То есть, если вы делаете это в коде. Для Layouts вы можете просто ввести размеры View в dp, и платформа Android позаботится об этом за вас.

person velis    schedule 25.04.2014