在尝试使用大量图像执行动画时,我尝试使用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左右。
对于普通的位图加载,这种处理是有限制的,这就是为什么视频编解码器存在的原因。