在尝试使用大量图像执行动画时,我尝试使用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)。
由于
提前获得宝贵的建议和解决方案。
答案 0 :(得分:1)
这里的原始png文件是180kb,但解码后,差不多 2MB的数据。为什么呢?
假设每个像素有1个字节,有三个颜色通道(RGB)字节大小= 3X(1000X720)/(1024 * 1024)=大约2.05 MB
这种处理可以通过普通的位图加载达到限制,这就是Video codec存在的原因。