关于逐帧动画的问题特定的android问题

时间:2011-08-22 14:55:33

标签: android android-animation

我正在尝试在android中执行逐帧动画。为此,我创建了一个名为“anim.xml”的xml文件,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false"> 
    <item android:drawable="@drawable/square0" android:duration="100" />
    <item android:drawable="@drawable/square1" android:duration="100" />
    <item android:drawable="@drawable/square2" android:duration="100" />
    <item android:drawable="@drawable/square3" android:duration="100" />
    <item android:drawable="@drawable/square4" android:duration="100" />
    <item android:drawable="@drawable/square5" android:duration="100" />
    </animation-list>

然后在我定义的帧布局中,我尝试将其设置为背景并在onCreate中启动它,如下所示:

    FrameLayout imgView = (FrameLayout)findViewById(R.id.frameLayout1);
    imgView.setBackgroundResource(R.drawable.anim);
    AnimationDrawable anim = (AnimationDrawable) imgView.getBackground();
    anim.start();

我所遇到的只是第一帧,但我想要的是一个正方形的动画。你对我做错了什么有任何意见吗?

干杯。

2 个答案:

答案 0 :(得分:4)

对我来说,Matt的解决方案对于这种情况似乎有点过分了。您只需将start()方法的调用移至onWindowFocusChanged()方法,因为此时AnimationDrawable完全附加到窗口并且实际上可以启动。像这样:

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    super.onWindowFocusChanged(hasFocus);
    anim.start();
}

onCreate()方法中执行所有其他操作,并使AnimationDrawable成为类变量,以便您可以从onWindowFocusChanged()方法访问它。

答案 1 :(得分:1)

我在尝试在onCreate方法中启动动画时遇到过问题。尝试用以下内容重新描述你的最后一行:

imgView.post(new Runnable()
    {       
        @Override
        public void run()
        {
            anim.start();
        }
    });

这将在onCreate执行完毕后立即启动动画。