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

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

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

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

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

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

5 ответов

Решение

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

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

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

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

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

В принципе:

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

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

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


Целью поддержки нескольких экранов является создание приложения, которое может работать должным образом и хорошо выглядеть на любой из обобщенных конфигураций экрана, поддерживаемых 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 гарантирует, что представлению будет присвоен соответствующий размер на экране текущего устройства.

Например, представление с layout_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 // для экранов высокой плотности

Разрешение - это количество пикселей на устройстве в каждом измерении (ширина × высота), которое может отображаться на экране.

Например, устройство с разрешением "1024 × 768" имеет ширину 1024 пикселей и высоту 768 пикселей.

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

Например, если экран устройства называется "100 PPI", это означает, что он имеет 100 психических пикселей на дюйм.

Справка

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

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

Другие вопросы по тегам