AnimationDrawable內存溢出优化
前提介绍
使用AnimationDrawable播放动画一般代码如下,系统会将所有的资源加载到APP,
当R.drawable.anim资源较多图片较大,手机配置较低时,会出现OutOfMemoryError
imageView.setImageResource(R.drawable.anim);
drawableAnim = (AnimationDrawable) imageView.getDrawable();
drawableAnim.stop();
drawableAnim.start();
下面将介绍一种替换方式,避免出现OutOfMemoryError.
FasterAnimationsContainer原理
- 详细Android工程源码:
https://gitee.com/chenjim/FasterAnimationDrawable - 逐帧decode图片为bitmap,通过BitmapFactory.Options.inBitmap,
复用bitmap减小内存消耗,
参见:FasterAnimationsContainer.java
效果对比如下