最近做的项目,客户临时要求改版,我真的是最烦这个,要求跟换主页面的背景,换上新的背景图,要求是动态的。
效果(我随便拿的五个图片做的gif):
方案:
帧动画方案:
缺点:1.好像只能imageview才能播放帧动画
2.容易OOM(播三四张还行,播九十张以上,且,每张都在300k左右就有OOM问题)
3.看到网上方案解决帧动画OOM,是一次播放十张,再往里面添十张,再播放。问题就有了,动画有一个 添加十个图片的时间卡顿。
surfaceview方案:
因为imageview要是以一张一张换,性能必定不如surfaceview。核心应该是
canvas = surfaceHolder.lockCanvas(rect);
canvas.drawBitmap(lruCache.get(folderName + "/" + assets[position]), null, rect, null); 我把上百张的图片放在assets文件夹下,然后读取图片(这边可以做Lrucache优化),下边贴出我的代码:
使用SurfaceView实现帧动画避免OOM问题

项目需求更改,需替换主页面背景并实现动态效果。对比帧动画方案的缺点(如只能在ImageView播放、易引发OOM、播放卡顿),选择SurfaceView方案。SurfaceView在初始化时显示第一张图避免黑屏,利用子线程更新UI以优化资源消耗,解决界面卡顿问题,并确保在界面返回时能正常播放动画。
最低0.47元/天 解锁文章
572

被折叠的 条评论
为什么被折叠?



