android如何解码资源

android如何解码资源,android,animation,bitmap,size,decode,Android,Animation,Bitmap,Size,Decode,在尝试使用大型图像集执行动画时,我尝试使用FrameAnimation,但我发现大型图像集存在outofmemory异常,在探索解决方案后,我找到了一个很好的解决方案Pinhassi的解决方案。 这一个帮助我实现动画,但不顺利,因为它需要一段时间来加载图像。然后我决定在开始动画之前解码位图(给ImageView提供位图而不是resID)。通过这个我得到了平滑的动画。但是从资源中解码位图需要一段时间 有没有更好的方法来做到这一点?如有任何建议,将不胜感激 图像的细节 图像总数=30 图像尺寸=10

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

有没有更好的方法来做到这一点?如有任何建议,将不胜感激

图像的细节

图像总数=30

图像尺寸=1000x720

大小=180kb

我正在执行的设备

制造商:摩托罗拉

型号:MZ601

安卓版本:3.0

解码位图

    Bitmap mBitmap=BitmapFactory.decodeResource(getResources(),resID);
    int bitmapSize= mBitmap.getRowBytes()*mBitmap.getHeight())
bitmapSize的近似值为3000000(可能以字节为单位),将其转换为KB 23437.5kb

这里原始的png文件是180kb,但经过解码后,占用了近2MB的数据为什么?

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

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

如果没有,那么有人解释为什么它占用了很大的空间吗

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

谢谢

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

这里原始的png文件是180kb,但经过解码后,需要花费将近 2MB的数据。为什么?

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


通过普通位图加载,这种处理可能会达到一个极限,这就是视频编解码器存在的原因。

这不是一个完整的答案,但我可以为您澄清一些事情。PNG是一种压缩格式,要在屏幕上绘制,框架必须创建它的未压缩版本,因此180k变成2mb。关于动画,你不能使用非常灵活的动画XML实现同样的结果吗?@Budius谢谢你的宝贵意见,因为我正在处理图像集FrameAnimation对我来说会更好,但是使用FrameAnimation我面临内存不足的异常。您是否考虑过使用
BitmapFactory.Options.inSampleSize
。这可能对你有帮助。只是一个suggestion@JJPA我曾考虑过InSampeSize,但它会缩小我的图像尺寸,这对我来说是无效的。非常感谢。