Кои комбинации от размер/плътност на екрана трябва да поддържам за растерно фоново изображение?

Пиша приложение, където ще ми трябват няколко растерни фона на цял екран. Въз основа на моето наивно четене на Поддръжка на множество екрани в документацията за Android, за да покрия всички моите бази Вероятно трябва да имам 16 версии на всяко растерно изображение: всички двойки от [ small, normal, large, xlarge ] и [ ldpi, mdpi, hdpi, xhdpi ]. Това трябва да намали работата, която процесорът трябва да извърши за мащабиране на изображенията, но ще доведе до големи разходи за съхранение.

Това обаче изглежда изключително неефективно поради две причини:

  1. Не всички от тези комбинации се срещат на практика.
  2. Тъй като просто изобразявам векторно изкуство за всеки физически размер (без зачитане на DPI), двойки като голям/mdpi и нормален/hdpi (които и двете са ~ 480x854 пиксела) са дублиращи се файлове.

И така, трябва ли просто да предоставя наистина големи изображения и да оставя на системата да ги намали? Да ухапете куршума и да предоставите много дублирани изображения? Избягване на проблема като цяло и създаване на кодово решение със сурови ресурси? Някакви други идеи? Благодаря.

РЕДАКТИРАНЕ: Очевидно можете да създадете чертежи на XML растерно изображение, което е псевдоним на действително растерно изображение. Това разрешава втория аргумент за неефективност. И все пак се чудя какви комбинации от тях предлагат другите на практика?


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


Отговори (2)


Бихте предоставили само изображения с различни разделителни способности, ако искате това произведение на изкуството да бъде с постоянен размер, независимо от dpi на екрана, на който се показва. Икона или бутон биха били пример за това.

За фоновите изображения, описани тук, не ви интересува какъв е dpi на изображението - интересува ви само какви са размерите x * y. Така че не е нужно да създавате кръстосано произведение на размери спрямо dpi. Трябва само да вземете предвид 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