首页 > 系统 > Android > 正文

Android编程实现动画自动播放功能

2019-10-22 18:32:41
字体:
来源:转载
供稿:网友

本文实例讲述了Android编程实现动画自动播放功能。分享给大家供大家参考,具体如下:

private ImageView image;private AnimationDrawable animDrawable = new AnimationDrawable();@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.table_title);    image = (ImageView) this.findViewById(R.id.scrollView);    //代码实现//   for(int i=0; i<16; i++){//     int id = getResources().getIdentifier("load_"+(i+1), "drawable", getPackageName());//     animDrawable.addFrame(getResources().getDrawable(id), 50);//   }//   animDrawable.setOneShot(false);//   image.setBackgroundDrawable(animDrawable);    animDrawable = (AnimationDrawable) image.getBackground();}@Overridepublic void onWindowFocusChanged(boolean hasFocus) {    super.onWindowFocusChanged(hasFocus);    animDrawable.start();}

在onCreate中执行 animDrawale.start() 动画并不执行。 搞不懂啊
另外以上代码测试过有缺陷。 例如在TabActivity中 onWindowFocusChanged只会执行一次

所以

AnimationDrawable ad;@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    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() {        if(ad.isRunning() == false){        ad.start();        }        return true; //注意必须返回true    }};

此方法试过 确实可行。 很好。

希望本文所述对大家Android程序设计有所帮助。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表