Android: в чем разница между разрешением и плотностью? - PullRequest
20 голосов
/ 02 апреля 2011

в соответствии с определениями Android, я обнаружил, что:

Разрешение: общее количество физических пикселей на экране

Плотность: в зависимости от разрешения экрана, разброс пикселей пофизическая ширина и высота экрана.

Может кто-нибудь помочь мне лучше понять различия между этими двумя определениями?

Заранее спасибо c.

Ответы [ 5 ]

40 голосов
/ 02 апреля 2011

Разрешение - это показатель количества пикселей, которые может отображать дисплей, например. 640х480. Плотность - это показатель размера каждого пикселя в реальных единицах. Это сильно зависит от размера экрана, например. 640x480 на 15-дюймовом дисплее.

При сравнении разрешения одного устройства с другим это прямое сравнение: чем выше разрешение, тем больше информации вы можете отобразить за раз. При сравнении плотности: чем выше плотность, тем четче будет отображаться дисплей.

Если у вас высокое разрешение и низкая плотность, ваш экран будет очень большим. С другой стороны, низкое разрешение и высокая плотность приводят к очень маленькому экрану.

29 голосов
/ 02 апреля 2011

Разрешение - это количество пикселей, отображаемых на экране.

Плотность зависит от реального размера вашего устройства, если оно маленькое и имеет более высокое разрешение, чем плотность, потому что вы показываете больше пикселей в меньшем физическом пространстве.

9 голосов
/ 04 апреля 2011

В основном:

  1. Разрешение относится к абсолютному количеству пикселей. (см. википедию Разрешение изображения )
  2. Плотность (он же Пиксели на дюйм - PPI) относится к относительному количеству пикселей на дюйм. (см. википедию Пиксельная плотность )

Береги себя, Бек

2 голосов
/ 25 ноября 2013

Рекомендации


Целью поддержки нескольких экранов является создание приложения, которое может нормально функционировать и хорошо выглядеть на любой из обобщенных конфигураций экранов, поддерживаемых Android.В предыдущих разделах этого документа представлена ​​информация о том, как Android адаптирует ваше приложение к настройкам экрана и как вы можете настроить внешний вид приложения для разных конфигураций экрана.В этом разделе содержатся некоторые дополнительные советы и обзор методов, которые помогают обеспечить правильное масштабирование приложения для разных конфигураций экрана.

Вот краткий контрольный список о том, как обеспечить правильное отображение приложения на разных экранах: 1.Используйте единицы wrap_content, fill_parent или dp при указании размеров в файле макета XML. 2. Не используйте жестко запрограммированные значения пикселей в коде приложения. 3. Не используйте AbsoluteLayout (не рекомендуется). 4.Поставьте альтернативные растровые изображения для разных плотностей экрана.

В следующих разделах содержатся дополнительные сведения.

  1. Используйте wrap_content, fill_parent или dp для измерений макета

При определении android: layout_width иandroid: layout_height для представлений в файле макета XML с использованием единиц измерения "wrap_content", "fill_parent" или dp гарантирует, что представлению будет присвоен соответствующий размер на экране текущего устройства.

Например, представление срасположение_width = "100dp" измеряет 100 пикселей в ширину на экране средней плотности, и система масштабирует его до 150 пикселей в ширину на экране высокой плотности, так что представление занимает примерно такое же физическое пространство на экране.

Точно так же вы должны предпочесть sp (независимый от масштаба пиксель) для определения размеров текста.Масштабный коэффициент sp зависит от настроек пользователя, и система масштабирует размер так же, как и для dp.

  1. Не используйте жестко заданные значения пикселей в коде приложения

По соображениям производительности и для упрощения кода система Android использует пиксели в качестве стандартной единицы для выражения значений размеров или координат.Это означает, что размеры представления всегда выражаются в коде с использованием пикселей, но всегда на основе текущей плотности экрана.Например, если myView.getWidth () возвращает 10, представление имеет ширину 10 пикселей на текущем экране, но на устройстве с экраном с более высокой плотностью, возвращаемое значение может быть равно 15. Если вы используете значения пикселей в коде приложения дляДля работы с растровыми изображениями, предварительно не масштабированными для текущей плотности экрана, вам может потребоваться масштабировать значения пикселей, которые вы используете в коде, для соответствия немасштабированному источнику растрового изображения.

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

  1. Не использовать AbsoluteLayout

В отличие от других виджетов макетов, AbsoluteLayout обеспечивает использование фиксированныхпозиции для размещения дочерних представлений, что может легко привести к пользовательским интерфейсам, которые плохо работают на разных дисплеях.Из-за этого AbsoluteLayout устарел в Android 1.5 (уровень API 3).

Вместо этого следует использовать RelativeLayout, который использует относительное позиционирование для размещения дочерних представлений.Например, вы можете указать, что виджет кнопки должен появляться «справа» от текстового виджета.

  1. Использовать ресурсы, зависящие от размера и плотности

Хотя системамасштабирует ваш макет и ресурсы для рисования на основе текущей конфигурации экрана, вы можете внести изменения в пользовательский интерфейс на экранах разных размеров и предоставить растровые рисунки, оптимизированные для разных плотностей.По сути, это повторяет информацию из этого документа ранее.

Если вам необходимо точно контролировать, как ваше приложение будет выглядеть на различных конфигурациях экрана, настройте макеты и растровые изображения в каталогах ресурсов, зависящих от конфигурации.Например, рассмотрим значок, который вы хотите отобразить на экранах средней и высокой плотности.Просто создайте свой значок двух разных размеров (например, 100x100 для средней плотности и 150x150 для высокой плотности) и поместите эти два варианта в соответствующие каталоги, используя соответствующие квалификаторы: res / drawable-mdpi / icon.png // для среднихэкраны плотности / drawable-hdpi / icon.png // для экранов высокой плотности

1 голос
/ 19 февраля 2015

Разрешение => Cp * Rp (Количество ПИКСЕЛЕЙ в КОЛОНКЕ и Количество ПИКСЕЛЕЙ в RAW)

Плотность => Np / 1 дюйм (Количество ПИКСЕЛЕЙ на дюйм)

...