帧动画自启动大概有4种:
第一种方式启动帧动画:(在Activity启动时会自动运行动画)
第二种方式启动动画:(在Activity启动时会自动运行动画)
第三种方式启动动画:(在Activity启动时会自动运行动画)
第四种方式启动动画:(在Activity启动时会自动运行动画)
第一种方式启动帧动画:(在Activity启动时会自动运行动画)
- AnimationDrawable
ad; -
- ImageView
iv = (ImageView) findViewById(R.id.animation_view); -
- iv.setBackgroundResource(R.drawable.animation);
-
- ad
= (AnimationDrawable) iv.getBackground(); -
- iv.getViewTreeObserver().addOnPreDrawListener(opdl);
-
//当一个视图树将要绘制时产生事件,可以添加一个其事件处理函数 - OnPreDrawListener
opdl=new OnPreDrawListener(){ - @Override
- public
boolean onPreDraw() { - ad.start();
- return
true; //注意此行返回的值 -
- }
- };
-
ImageView image = (ImageView) findViewById(R.id.animation_view); - image.setBackgroundResource(R.anim.oldsheep_wait);
- animationDrawable
= (AnimationDrawable) image.getBackground(); - RunAnim
runAnim=new RunAnim(); - runAnim.execute("");
-
- ------------------------------------------------------------
- class
RunAnim extends AsyncTask<String, String, String> -
- {
-
@Override -
protected String doInBackground(String... params) -
{ -
if (!animationDrawable.isRunning()) -
{ -
animationDrawable.stop(); -
animationDrawable.start(); -
} -
return ""; -
} - }
第三种方式启动动画:(在Activity启动时会自动运行动画)
- ImageView
image = (ImageView) findViewById(R.id.animation_view); -
- image.setBackgroundResource(R.anim.oldsheep_wait);
-
- animationDrawable
= (AnimationDrawable) image.getBackground(); - image.post(new
Runnable() - {
-
@Override -
public void run() -
{ -
animationDrawable.start(); -
} -
-
});
- ImageView
image = (ImageView) findViewById(R.id.animation_view); -
- image.setBackgroundResource(R.anim.oldsheep_wait);
- animationDrawable
= (AnimationDrawable) image.getBackground(); -
- -----------------------------------------------------------
- @Override
-
public void onWindowFocusChanged(boolean hasFocus) -
{ -
animationDrawable.start(); -
super.onWindowFocusChanged(hasFocus); -
}
要实现动画的自启动直接写在onCreate,onStart,onResume里面,单纯的.start()一句启动是无效的,必须有事件启动,写在比如事件监听当中 。
转载自:http://blog.sina.com.cn/s/blog_8f5097be010127j2.html