Android: в чем разница между разрешением и плотностью?

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

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

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

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

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

Ответ 1

Резолюция о том, сколько пикселей вы можете отобразить на экране.

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

Ответ 2

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

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

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

Ответ 3

В принципе:

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

Позаботьтесь, Беко

Ответ 4

Лучшие практики


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

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

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

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

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

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

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

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

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

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

  • Не используйте AbsoluteLayout

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

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

  • Использование ресурсов размера и плотности.

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

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

Ответ 5

Разрешение = > Cp * Rp (количество PIXEL в COLUMN и количество PIXEL в RAW)

Плотность = > Np/1 дюйм (количество PIXEL на дюйм)