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

  • 相关阅读:
    5 -- Hibernate的基本用法 --5 1 持久化类的要求
    5 -- Hibernate的基本用法 --5 深入理解持久化对象
    Java -- POI -- 随笔汇总
    jdk 自带的数据库Derby使用
    SpringMVC中 -- @RequestMapping的作用及用法
    Hibernate -- Dao层 -- CURD -- 随记
    JAVA WEB -- request
    SpringMVC -- @RequestMapping -- 随记
    Navicat -- Oracle -- 错误锦集
    Tomcat -- 启动错误 -- 解决锦集
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/4249487.html
Copyright © 2011-2022 走看看