Не в состоянии понять, как использовать изображения различной плотности для 1.6+? - PullRequest
4 голосов
/ 17 декабря 2009

Я пытаюсь понять, как изображения res / drawables должны работать с разной плотностью экрана. Сейчас у меня есть приложение 1.5, и, например, у меня есть изображение размером 100x100 пикселей. Когда используется на Droid, он масштабирует это изображение, так что оно кажется того же размера относительно этого устройства (все остальные масштабирования макета обрабатываются мной, с использованием единиц измерения).

Так что теперь мне нужно обновить свой проект и добавить три папки, верно?

  1. рисуем-ldpi
  2. рисуем-MDPI
  3. рисуем-ИПЧР

поэтому я собираюсь поместить свое изображение 100x100 в папку -mdpi. Если я хочу сделать версию для папки -hdpi - как узнать, насколько она больше? Я имею в виду, что по умолчанию это должно быть в 1,5 раза больше. Но что произойдет, если я увеличу его в 2,0 раза или устройство, на котором я работаю, не будет иметь плотность в 1,5 раза больше, чем у базовой линии G1? Разве мои макеты не начнут выглядеть по-другому на этих устройствах?

Спасибо

Ответы [ 3 ]

12 голосов
/ 23 декабря 2009

ldpi, mdpi и hdpi соответствуют «классам» плотности, а не фактической плотности устройства.

Например, G1 - это устройство класса mdpi (160 точек на дюйм), но его плотность экрана составляет около 180 точек на дюйм. Дроид является устройством класса hdpi (240 точек на дюйм), но его экран 265 точек на дюйм.

Масштабирование растрового изображения основано только на классе плотности. Фактическая плотность экрана игнорируется.

Таким образом, G1 будет показывать битовые карты mdpi, немного меньшие, чем устройства mdpi с истинным экраном 160 dpi, но это очень маленькая разница, так что это не имеет большого значения.

(Обратите внимание, что другие типы размеров, такие как "in" и "mm", учитывают плотность экрана.)

Так что для плотностей у вас есть 3 варианта: ldpi (120), mdpi (160) и hdpi (240). Следовательно, ваше растровое изображение 100x100 должно быть 75x75, 100x100 и 150x150 соответственно.

Подробнее см .: http://developer.android.com/guide/practices/screens_support.html#qualifiers

1 голос
/ 17 декабря 2009

Поведение также зависит от того, что объявляет ваш манифест, в частности от тега в манифесте (вы можете настроить его, используя «дополнительные возможности манифеста» на первой вкладке редактора манифестов ADT).

1 голос
/ 17 декабря 2009

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

Возможно, вы также захотите использовать (маленький / нормальный / большой) вместо (ldpi / mdpi / hdpi), поскольку первые относятся к размеру экрана, а не к плотности. Спецификаторы каталога ресурсов

...