android如何解码资源



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

是否有更好的方法来做同样的事情?如有任何建议,不胜感激。

图片的详细信息

图片总数=30;

图片尺寸= 1000x720;

= 180 kb大小

我正在执行的设备

生产:摩托罗拉

模型: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)。

感谢

提前获取有价值的建议和解决方案。

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

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

对于普通的位图加载,这种处理是有限制的,这就是为什么视频编解码器存在的原因。

最新更新