我的动画没有开始?

时间:2011-11-03 13:08:20

标签: android android-animation

我正在尝试一个简单的逐帧动画。我的动画可以按下按钮,但我想它应该在活动开始或加载时启动。我已经尝试 onWindowFocusChanged()方法按照文档中的说明启动动画。我想我犯的是愚蠢的错误。任何人都有想法。

public class FirstActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
Button btnalarm;
AnimationDrawable AniFrame;
ImageView images;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    images=(ImageView)findViewById(R.id.myImageView);
   images.setBackgroundResource(R.drawable.demo_animation);
   AniFrame = (AnimationDrawable)images.getBackground();

}
@Override
public void onWindowFocusChanged(boolean hasFocus) {

    super.onWindowFocusChanged(hasFocus);
    Log.v("in focus", "in focus");
    AniFrame.start();
}

demo_animation.xml文件---->

  <animation-list
     xmlns:android="http://schemas.android.com/apk/res/android"
       android:oneshot="false">
   <item android:drawable="@drawable/a" android:duration="50" />
  <item android:drawable="@drawable/b" android:duration="50" />
   <item android:drawable="@drawable/c" android:duration="50" />
  <item android:drawable="@drawable/d" android:duration="50" />
  <item android:drawable="@drawable/e" android:duration="50" />
  <item android:drawable="@drawable/f" android:duration="50" />
  <item android:drawable="@drawable/h" android:duration="50" />
  <item android:drawable="@drawable/i" android:duration="50" />
  <item android:drawable="@drawable/j" android:duration="50" />
  <item android:drawable="@drawable/k" android:duration="50" />    
</animation-list>

3 个答案:

答案 0 :(得分:0)

添加     AniFram.start()到onCreate()的末尾。

同时给你的R.layout.main充气。

示例:

LinearLayout layout = (LinearLayout)findViewById(R.id.main);

layout.startAnimation(AniFrame);

还要检查logcat是否存在问题。

编辑:

从文档中查看此内容应该提供帮助。

Animating a drawable

答案 1 :(得分:0)

只需使用另一个线程。它会正常工作。

public void onCreate(Bundle savedInstanceState) {
//your code 
//At last of onCreate add these lines
images.post(new MyAnimation());
}

class MyAnimation implements Runnable{
@Override    
public void run(){
    AniFrame.start();
    }
    }

现在它会起作用,只需检查一下。

答案 2 :(得分:0)

尝试在开始动画之前使用setCallback,如下所示:

AniFrame.setCallback(images);