Анимация с большим количеством растровых изображений - PullRequest
3 голосов
/ 13 ноября 2011

Я видел подобные темы здесь, но пока не нашел достаточного решения.

Я работаю над своим первым приложением для Android и пытаюсь создать анимацию, используя большое количество изображений / растровых изображений.У меня есть список растровых изображений, которые мне нравятся для воспроизведения покадровой анимации. Количество изображений может изменяться от нескольких до сотен (в настоящее время загружается из ресурсов)

Я использую SurfaceView и использую следующее для загрузкии нарисуйте мои изображения

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), res);
canvas.drawBitmap(bitmap, x, y, null);

Я попробовал два метода:

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

  2. Декодирование изображений по одному.Это приводит к низкой производительности и высокой загрузке процессора

Я ищу способ повысить производительность для больших списков. Есть ли способ кэшировать декодированные растровые изображения или преобразовывать их в какое-то видео?Поток (без потерь?) для повышения производительности?

Есть идеи?

1 Ответ

1 голос
/ 13 ноября 2011

о производительности, Сначала не загружайте размер изображения отверстия, используйте метод ниже, чтобы уменьшить размер при загрузке изображения:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = number; //reduce image size
Bitmap b =  BitmapFactory.decodeFile(image path, options);

Также загружайте изображения для анимации текущего времени не для всех анимаций, затем загружайте другие анимации в потоке вместо законченной анимации.

О времени в случае 2, загрузите изображения в потоке и покажите диалог загрузки для пользователя, пока все изображения не загрузятся.

...