Не в состоянии понять, как использовать изображения различной плотности для 1.6+?

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

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

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

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

Спасибо

3 ответа

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

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

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

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

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

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

Для получения дополнительной информации см.: http://developer.android.com/guide/practices/screens_support.html

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

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

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

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