Android 用surfaceview模拟帧动画的效果,解决帧动画的OOM问题

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

最近做的项目,客户临时要求改版,我真的是最烦这个,要求跟换主页面的背景,换上新的背景图,要求是动态的。

效果(我随便拿的五个图片做的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优化),下边贴出我的代码:

        surfaceHolder = sv_main.getHolder();
  
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值