Большой источник анимации ImageView

1

Какой лучший формат изображения для Android с точки зрения памяти? PNG рекомендуется для iOS, поскольку xCode делает с ним что-то волшебное. Это то же самое для Android?

В настоящее время я разрабатываю большое приложение с несколькими анимациями (раздвижные экраны, затухание и т.д.). Все работает хорошо до сих пор! Однако я заметил анимацию вида, где представление содержит ImageView с (довольно большим) PNG, поскольку источник немного отсталый.

Очевидно, что я могу сделать PNG меньше, но есть ли что-нибудь дополнительное, что я могу сделать, чтобы уменьшить объем памяти, который занимает ImageView/делает анимацию гладкой? Я знаю, что PNG имеет гораздо больший размер файла, чем JPEG, но я не вижу, что это проблема. JPEG или PNG (я полагаю), в конечном итоге, хранятся в виде массива цветов, поэтому они оба будут занимать одну и ту же память. PNG, вероятно, лучше для загрузки из-за меньшего количества циклов, раскалывающих. Снова я только предполагаю, что мои знания форматов файлов изображений равны нулю.

Альтернативно, есть ли что-то еще, вызывающее отставание? Является ли растровое изображение масштабированным, чтобы оно соответствовало представлению each onDraw() во время анимации, поэтому следует ли масштабировать растровое изображение в коде, прежде чем передавать его в ImageView?

Благодаря,

  • 0
    перейти на 9.png или простой png
  • 1
    Изображения хранятся в памяти всегда как растровые изображения. Формат файла в файловой системе не имеет значения afaik. Чтобы сохранить память, убедитесь, что вы предварительно масштабируете свои изображения, если они больше, чем они появляются на экране.
Теги:
view
animation
imageview

2 ответа

2
Лучший ответ

Форматы, поддерживаемые Android: PNG, JPG и GIF (также 9.png). Рекомендованный PNG, как указано в руководстве dev

Все они хранятся в памяти в виде растрового изображения, поэтому самое главное - это цветное изображение, например:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon, options);

Дополнительная информация: qaru.site/questions/1306389/...

0

и добавить (после сотов):

<application 
    android:largeHeap="true"
    ...

к файлу манифеста: =)

спасибо моему дорогому другу :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню