Android:加载动画时的OutOfMemory异常

时间:2011-05-21 12:09:57

标签: android animation out-of-memory

我做的很简单,但我有很多帧。它似乎是导致异常的帧数量。我试图减小每个帧的大小,但这似乎并没有太大影响。甚至在动画开始之前。没有显示更少的帧,可以做什么?还有另一种方法吗?

改编自示例代码:

public class XMLAnimation extends Activity
{
    class MyAnimationRoutine extends TimerTask
    {
        MyAnimationRoutine()
        {
        }

        @Override
        public void run()
        {
            ImageView img = (ImageView) findViewById(R.id.simple_anim);
            AnimationDrawable frameAnimation = (AnimationDrawable) img
                    .getBackground();

            frameAnimation.start();
        }
    }

    class MyAnimationRoutine2 extends TimerTask
    {
        MyAnimationRoutine2()
        {
        }

        @Override
        public void run()
        {
            ImageView img = (ImageView) findViewById(R.id.simple_anim);
            AnimationDrawable frameAnimation = (AnimationDrawable) img
                    .getBackground();

            frameAnimation.stop();
        }
    }

    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.main);
    }

    @Override
    protected void onResume()
    {
        super.onResume();

        ImageView img = (ImageView) findViewById(R.id.simple_anim);
        img.setBackgroundResource(R.anim.simple_animation);

        MyAnimationRoutine mar = new MyAnimationRoutine();
        MyAnimationRoutine2 mar2 = new MyAnimationRoutine2();

        Timer t = new Timer(false);
        t.schedule(mar, 100);
        Timer t2 = new Timer(false);
        t2.schedule(mar2, 5000);
    }
}

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
      <ImageView android:id="@+id/simple_anim"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:gravity="center"
          android:layout_centerHorizontal="true"
           /> 
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Hello World, XMLAnimation"
    />
</LinearLayout>

动画列表:

<?xml version="1.0" encoding="utf-8"?>
 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" id="selected" android:oneshot="false">
    <item android:drawable="@drawable/frame1" android:duration="50" />
    ...
    <item android:drawable="@drawable/frame40" android:duration="50" />
 </animation-list>

1 个答案:

答案 0 :(得分:0)

经过一些小的重构和代码清理,在模拟器中擦除数据并重新开始,这些问题就消失了。在实际设备上进行测试,这部分代码运行得非常顺利。

所以,有时候,只是开始新鲜的工作。