Какие комбинации размера экрана / плотности я должен поддерживать для растрового фонового изображения? - PullRequest
3 голосов
/ 22 марта 2011

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

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

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

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

РЕДАКТИРОВАТЬ: По-видимому, вы можете создавать растровые рисунки XML, которые псевдоним фактического растрового изображения. Это решает второй аргумент неэффективности. Тем не менее, мне интересно, какие комбинации этого дают другие на практике?

Ответы [ 2 ]

0 голосов
/ 28 марта 2013

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

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

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

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

0 голосов
/ 22 марта 2011

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

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

...