怎样解决android大量图片的帧动画卡顿和OOM问题?

请尝试开源框架,来自Facebook的fresco,希望能帮到你。另外,如果想了解他们怎么解决这个问题的,请查阅该框架源代码或搜索相关源码解析文章,网上有很多。--最后如果你将高分辨率的图片直接扔到drawable或者drawable-mdpi文件夹里,载入报OOM请自行去阅读下谷歌的开发文档这个目录名称是干嘛用的,如果不想OOM可以尝试drawable-xxhdpi文件夹再看看,不过你要是想直接拿高分辨率的图做动画该OOM了还是会OOM...请查阅SurfaceView相关文档。祝你好运
■网友
【怎样解决android大量图片的帧动画卡顿和OOM问题?】 以前做直播的时候遇到多图(最多200帧)帧动画,也遇到了类似情况,然后封装了一个 FrameAnimation, 具体也是通过SurfaceView、TextureView来绘制的。

■网友
1.图片如果有压缩的空间,尽可能压缩。推荐网址:http://tinypng.com 和http://tinyjpg.com2.缓存缓存框架有很多,各有优缺点。根据自己需要选择一个。3.部分加载部分加载就是只加载当前能看到的,超出视图范围的立即回收。大量图文加载总结起来六个字:分页,异步,缓存
■网友
最近也遇到这样的问题,50张图片,每张图片大概200kb左右。因为个人水平有限,最终也没有比较好的办法。首先你得明白,一张200kb的图片,从byte数组加载成bitmap的时间都需要50ms左右(个人测试,不一定准确,因手机而异),所以你很难做到播放动画不卡顿的情况大致的实现思路是:1、从网络拉取图片的zip包到本地2、播放前,将每张图片加载成byte数组(从图片的byte数组加载成bitmap的速度要快于,从文件加载成bitmap)3、通过SurfaceView,去绘制每一帧的画面,及时回收已经显示过的bitmap4、使用预加载等策略,大概策略是,播放前,先加载2-3帧的bitmap进内存,然后维护一个线程池用于使用子线程提前加载下一帧或者下两帧的bitmap进内存5、在绘制当前帧时,如果子线程没有准备好,就等绘制好再显示最终实现结果:这个动画控件在播放大图片动画(每张大小超过200kb),会短时间内出现内存大量增加(主要因为加载了数个bitmap和大量byte数组),然后在cpu稍差,屏幕分辨率却高的手机上,最多保证每帧100ms(手机空闲的情况下),配置好的手机上,播放的动画能满足设计的需求,配置差的手机上卡顿难以避免。结语:我觉得,这种设计超级坑爹关于IOS:我们IOS也没有出现卡顿和OOM的情况,他们是首先拉到所有图片路径的数组,然后加载时直接通过这个路径,加载得到UIImage对象,然后设置给显示控件就行了。。。为何如此简单。。。而且完全不用关心OOM和加载时间问题


    推荐阅读