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

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

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

  1. drawable-ldpi
  2. drawable-mdpi
  3. вытяжка-hdpi

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

Спасибо


person Mark    schedule 17.12.2009    source источник


Ответы (3)


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

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

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

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

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

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

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

person Xavier Ducrohet    schedule 23.12.2009

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

Возможно, вы также захотите использовать (small / normal / large) вместо (ldpi / mdpi / hdpi), потому что первые относятся к размеру экрана, а не к плотности. квалификаторы каталога ресурсов

person Ulrich Scheller    schedule 17.12.2009

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

person ralfoide    schedule 17.12.2009