AnimationDrawable內(nèi)存溢出優(yōu)化
前提介紹
使用AnimationDrawable播放動畫一般代碼如下,系統(tǒng)會將所有的資源加載到APP,
當R.drawable.anim資源較多圖片較大,手機配置較低時,會出現(xiàn)OutOfMemoryError
imageView.setImageResource(R.drawable.anim);
drawableAnim = (AnimationDrawable) imageView.getDrawable();
drawableAnim.stop();
drawableAnim.start();
下面將介紹一種替換方式,避免出現(xiàn)OutOfMemoryError.
FasterAnimationsContainer原理
- 詳細Android工程源碼:
https://gitee.com/chenjim/FasterAnimationDrawable - 逐幀decode圖片為bitmap,通過BitmapFactory.Options.inBitmap,
復用bitmap減小內(nèi)存消耗,
參見:FasterAnimationsContainer.java
效果對比如下
效果對比