zoukankan      html  css  js  c++  java
  • Android-AnimationDrawable(三)运行的几种方式

        项目开发用到了AnimationDrawable,调用start后没有运行,很纳闷。google搜了下。记录一下。

    这个AnimationDrawable.start不能直接写在onClick,onStart,onResume里面,是无效的,无法启动动画,只能写在比如事件监听当中。

       

    以下有几种运行AnimationDrawable的方式。

      第一种:在事件监听中start AnimationDrawable 下面一个例子举例 当一个视图树将要绘制时产生事件

    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();
    
    @Override
        public void onWindowFocusChanged(boolean hasFocus)
        {
            animationDrawable.start();
            super.onWindowFocusChanged(hasFocus);
        }

    本文转自:http://blog.csdn.net/liuhanhan512/article/details/7666821

  • 相关阅读:
    BUAA_OO_2020_Unit3_Overview
    BUAA_OS_2020_Lab2_Code_Review
    BUAA_OO_2020_Unit2_Overview
    BUAA_OS_2020_Lab1_Code_Review
    BUAA_OO_2020_Unit1_Overview
    实验十 团队作业6:团队项目用户验收&Beta冲刺
    【Beta】Scrum meeting 4
    【Beta】Scrum meeting 3
    【Beta】Scrum meeting 2
    【Beta】Scrum meeting 1
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/4249487.html
Copyright © 2011-2022 走看看