Android 帧动画 AnimationDrawable 导致的 OOM ANR 的解决方案

本文介绍了Android帧动画导致的OOM和ANR问题,提出了使用SurfaceView来替代AnimationDrawable。通过SurfaceView边绘制边加载,配合Bitmap缓冲区和内存复用策略,有效解决了内存抖动和性能问题。同时,文章提到了内存管理和帧动画的优化方法。
摘要由CSDN通过智能技术生成

FrameAnimation

如果有播放超多帧动画的需求,直接点击 FrameAnimation 在github查看,百分之99.99能满足你的需求,基本此文就可以终结了。

PS. 此文年久失修,上述代码的具体实现本文已有较大差距,不过整体思路还是可以参考下的。

关于Android帧动画

       当在应用中需要使用帧动画的时候,最先想到的就是Android提供的AnimationDrawable了,但是如果帧动画中如果包含上百帧图片,此时再用AnimationDrawable就不是那么理想了。AnimationDrawable使用一个Drawable数组来存储每一帧的图像,会直接把全部图片加载进内存。随着帧数量的增多,就算性能再强劲的机器也会卡顿、OOM。

使用SurfaceView来实现帧动画的效果

    最近的项目中需要用到大量的帧动画(各种闪瞎24K钛合金狗眼的礼物效果,多的高达200帧),既然AnimationDrawable不行,就想到了两种解决方法。

第一个想到的解决办法就是用openGL来绘制了。

   因为是直播的项目,包含人脸贴图等都是用opengl绘制的,如果用OpenGL绘制一层Texture直接推流还省

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值