具有大量位图的动画

时间:2011-11-13 12:33:21

标签: android animation bitmap surfaceview

我在这里看过类似的线程,但还没找到足够的解决方案。

我正在研究我的第一个Android应用,并尝试使用大量图像/位图创建动画。我有一个位图列表,我喜欢逐帧播放动画 图像数量可能从几个变为几百个(当前从资源加载)

我正在使用SurfaceView并使用以下内容加载和绘制我的图像

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

我尝试了两种方法:

  1. 预加载所有图像并缓存到内存。这样可以获得很好的性能 但是需要时间来初始化,使用大量内存并仅适用于少量图像

  2. 逐个解码图像。这导致性能低下和高CPU使用率

  3. 我正在寻找提升大型列表性能的方法, 有没有办法缓存解码的位图或将它们转换为某些视频流(无损?)以提高性能?

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

关于表演, 首先不要加载孔图像大小,使用下面的方法来减小加载图像时的大小:

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

还为当前时间动画加载图像而不是所有动画,然后在线程中加载其他动画而不是完成动画。

关于案例2中的时间,在thread中加载图像并显示用户的加载对话框,直到加载所有图像。