解决使用AnimationDrawable无法播放动画的问题

来源:互联网 发布:淘宝客服中心如何做 编辑:程序博客网 时间:2024/05/16 20:29

第一种方式启动帧动画:(在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; //注意此行返回的值      }};

第二种方式启动动画:(在Activity启动时会自动运行动画)

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();     }});

第四种方式启动动画:(在Activity启动时会自动运行动画)

ImageView image = (ImageView) findViewById(R.id.animation_view);image.setBackgroundResource(R.anim.oldsheep_wait);animationDrawable = (AnimationDrawable) image.getBackground();@Overridepublic void onWindowFocusChanged(boolean hasFocus){    animationDrawable.start();    super.onWindowFocusChanged(hasFocus);}


        //image = (ImageView)findViewById(R.id.imageview);                //animationDrawable = new AnimationDrawable();        //for(int i =0;i<8;i++){        ////第一个 就是我们的资源名称(图片名)          ////第二个 就是我们存放图片的文件夹drawable          ////第三个 包名也可以用Context的getPackageName返回应用程序的包名          //int id = getResources().getIdentifier( "a"+i, "drawable", "xiaosi.bu");        //System.out.println("ID:" + id);        //      animationDrawable.addFrame(getResources().getDrawable(id), 2000);        //}        //设置手否重复播放,false为重复        //animationDrawable.setOneShot(false);        //image.setImageDrawable(animationDrawable);

原创粉丝点击