Android AnimationDrawable内存管理

时间:2013-02-15 09:42:48

标签: java android

我正在创建一个Android应用程序&它有每个活动的背景动画。 我使用AnimationDrawable setBackgroundResource(anim.xml)来运行动画xml文件并且工作正常。 问题是,当我在设备上测试时,有些设备会给我一个FATAL EXEPTION的信息 bitmap size exeeds VM budget(out of memory)

所以我浏览网页并找到了一些解决方案,例如之前执行animation.setCallbacks(null) 运行动画,scaling down bitmaps(以编程方式)并调整drawables的大小。 我尝试了它们,但很少有低堆的设备仍然会产生相同的错误。

所以我想知道我做错了什么或遗失了什么? 他们是解决这个问题的其他方法吗?

//animation
    private void animate() {
            imgView = (ImageView)findViewById(R.id.imageView1);
            imgView.setVisibility(ImageView.VISIBLE);
            imgView.setBackgroundResource(R.drawable.level_animation);

            frameAnimation =  (AnimationDrawable) imgView.getBackground();
            if (frameAnimation.isRunning()) {
               frameAnimation.stop();
            }
            else {
               frameAnimation.stop();
               frameAnimation.start();
            }
         } 

xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true" >
       <item android:drawable="@drawable/top_anim1" android:duration="200" />
       <item android:drawable="@drawable/top_anim2" android:duration="200" />
       <item android:drawable="@drawable/top_anim3" android:duration="200" />
       <item android:drawable="@drawable/top_anim4" android:duration="200" />
       <item android:drawable="@drawable/top_anim5" android:duration="200" />
</animation-list>

0 个答案:

没有答案