android如何解码资源

时间:2013-01-11 10:48:29

标签: android animation bitmap size decode

在尝试使用大量图像执行动画时,我尝试使用FrameAnimation但是我发现了大量图像的outofmemory异常,经过对解决方案的一些探索后,我发现了一个很好的解决方案here Pinhassi的解决方案。
这个可以帮助我实现动画但不顺利,因为它需要花时间来加载图像。然后我决定在开始动画之前解码位图(给ImageView提供位图而不是resID)。通过这个我得到了流畅的动画。但它需要花时间从资源中解码位图。

有没有更好的方法来做同样的事情?任何建议都将不胜感激。

图像细节

总图像数量= 30;

图像尺寸= 1000x 720;

尺寸= 180kb

我正在执行的设备

制造商:摩托罗拉

型号:MZ601

Android版:3.0

解码位图

    Bitmap mBitmap=BitmapFactory.decodeResource(getResources(),resID);
    int bitmapSize= mBitmap.getRowBytes()*mBitmap.getHeight())

近似bitmapSize值为3000000(可能以字节为单位)将其转换为千字节23437.5kb

这里的原始png文件是180kb,但在解码之后,需要接近2MB的数据。 为什么?

我在分析位图大小时是否做错了什么?

如果是,那么如何获得解码位图的大小?

如果不是,那么任何人都可以解释为什么占用大空间?

注意:我不想缩放位图,因为它非常适合我的设备屏幕尺寸(1280 x 752)。

由于

提前获得宝贵的建议和解决方案。

1 个答案:

答案 0 :(得分:1)

  

这里的原始png文件是180kb,但解码后,差不多   2MB的数据。为什么呢?

假设每个像素有1个字节,有三个颜色通道(RGB)字节大小= 3X(1000X720)/(1024 * 1024)=大约2.05 MB

这种处理可以通过普通的位图加载达到限制,这就是Video codec存在的原因。