Какие комбинации размера и плотности экрана следует поддерживать для растрового фонового изображения?

Я пишу приложение, в котором мне понадобится несколько полноэкранных растровых фонов. Основываясь на моем наивном чтении Поддержка нескольких экранов в документации Android, чтобы охватить все мои базы, вероятно, должны иметь 16 версий каждого растрового изображения: все пары [ small, normal, large, xlarge ] и [ ldpi, mdpi, hdpi, xhdpi ]. Это должно уменьшить работу ЦП по масштабированию изображений, но потребует больших затрат на хранение.

Однако это кажется дико неэффективным по двум причинам:

  1. Не все эти комбинации встречаются на практике.
  2. Поскольку я просто визуализирую векторную графику для каждого физического размера (без учета DPI), такие пары, как big/mdpi и normal/hdpi (оба имеют размер ~ 480x854 пикселей), являются дублирующимися файлами.

Итак, должен ли я просто предоставить действительно большие изображения и позволить системе уменьшить их масштаб? Стиснуть зубы и предоставить много дубликатов изображений? Полностью избежать проблемы и создать какое-то кодовое решение с помощью необработанных ресурсов? Любые другие идеи? Спасибо.

EDIT: По-видимому, вы можете создавать растровые изображения XML, которые являются псевдонимом фактического растрового изображения. Это решает второй аргумент неэффективности. Тем не менее, интересно, какие комбинации из них на практике обеспечивают другие?


person Hilton Campbell    schedule 22.03.2011    source источник


Ответы (2)


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

Для фоновых изображений, описанных здесь, вас не волнует, что такое dpi изображения — вам важны только размеры x * y. Таким образом, вам не нужно производить перекрестное произведение размеров и точек на дюйм. Вам нужно только рассмотреть 4 категории размера экрана.

И в пределах 4 категорий размеров экрана вам нужно сохранить только один из больших размеров (xlarge или large) и позволить платформе увеличивать или уменьшать его по мере необходимости. Вы также можете выполнить масштабирование программно, чтобы убедиться, что вы не меняете соотношение сторон фона и не обрезаете его.

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

person Peter vdL    schedule 28.03.2013

Я бы посоветовал предоставить изображения для ldpi, mdpi, hdpi и, возможно, xhdpi (в зависимости от ваших целевых пользователей). Это позволит вам прекрасно охватить наиболее часто используемые разрешения.

Если у вас возникнет ощущение, что ваше приложение становится слишком большим (из-за того, что вы решите добавить изображения всех возможных размеров или по другим причинам), вы также можете рассмотреть возможность переноса вашего приложения на SD-карту. Таким образом, хранение больше не будет большой проблемой. (http://developer.android.com/guide/appendix/install-location. HTML)

person tvkanters    schedule 22.03.2011
comment
Я беспокоюсь, что размер самого приложения будет слишком большим. В каком размере я должен предоставить эти изображения? Я не хочу, чтобы ОС когда-либо приходилось увеличивать какие-либо чертежи на любом устройстве. - person Hilton Campbell; 22.03.2011