Путаница в разрешении, аспектах экрана в Android
Я задаю этот вопрос после долгих чтений. Я всегда слышал, что dpi для принтеров, но когда дело доходит до экрана, они также говорят о dpi. Они имеют в виду ppi?
Теперь, что на самом деле является разрешением, для меня это количество пикселей, которое может отображать каждое измерение, например, 800x600 означает 800 пикселей по ширине и 600 пикселей по высоте, но в некоторых местах я вижу, что они обозначают разрешение как dpi.,
Я пытаюсь понять эту концепцию хорошо, потому что это очень важно в Android, как в этой статье,
Например, допустим, что иконка имеет размер 0,5x0,5 при визуализации на экране. Затем, изображение должно быть создано с наибольшей поддерживаемой плотностью или как масштабируемая векторная графика. Рекомендуется поддерживать максимальную плотность, которая в настоящее время составляет xxhdpi при 480 dpi. При разрешении 480 точек на дюйм изображение 0,5x0,5 преобразуется в разрешение 240x240 пикселей.
Так что на самом деле это относится к dpi как к ppi, если я понимаю?
До сих пор я понял, что разные пиксели могут отображать разное количество пикселей. Вот почему мы не используем пиксели в качестве единицы измерения. Вместо этого мы используем dp, где dp - один пиксель на устройстве с разрешением 160 точек на дюйм (опять же путаница с dpi и ppi)
Может ли кто-то устранить эту большую путаницу или направить меня к статье, которая может очистить
2 ответа
Мате, разрешение 800 X 600 подразумевает, что экран имеет 480 000 точек пикселей, которые будут использоваться для визуализации экрана (это часто путают с размерами дисплея). DPI или PPI означает количество точек / точек на дюйм, это мера плотности экрана.
Так что, учитывая только разрешение, нельзя определить фактическую длину дисплея, если параметр плотности также не доступен. Таким образом, разрешение 800 X 600 имеет 480 000 точек пикселей, а пусть это устройство имеет плотность 480 точек на дюйм.
Так что ширина экрана
= Нет точек пикселей по ширине / плотности
= 800/480
= 1,67 дюйма
Так же,
Высота = 600/480 =1,25 дюйма
и если устройство с разрешением 800X600 имеет плотность 160 точек на дюйм, его размеры будут сильно различаться. Следующие расчеты рассчитывают высоту / ширину 800X600 на 160 точек на дюйм. Сравните эти два значения с расчетами выше 480 dpi.
Ширина экрана = Нет точек пикселей по его ширине / Плотность
= 800/160
= 5,0 дюйма
Так же,
Высота = 600/160 =3,75 дюйма
Это та самая причина, по которой масштабирование изображений для оптимального размещения на экране является такой сложной проблемой во фрагментированной среде Android. Однако я люблю Android!
Надеюсь это поможет! и любой, у кого есть что добавить / удалить. изменить этот ответ, приветствуется.
- точек на дюйм (точек на дюйм) == пикселей на дюйм (пикселей на дюйм)
- Вы также говорите о
DisplayMetrics.density
, который дает вам множитель дляdp
единица измерения. - Есть также
DisplayMetrics.scaledDensity
что также учитывает размер текста, выбранный пользователем.
Проще говоря, dp
Устройство предназначено, чтобы дать вам некоторую безопасность о размере ваших объектов на экране. 160dp должен представлять один дюйм на любом экране. Чтобы достичь этого, вы должны умножить свое измерение на DisplayMetrics.density
или же DisplayMetrics.scaledDensity
,
То есть, если вы делаете это в коде. За Layout
s, вы можете просто ввести View
Размеры в dp
и Android Framework позаботится об этом за вас.