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

  • 相关阅读:
    ecshop 浏览历史样式的修改
    onmouseover 执行 ToolTip 控件
    e​c​s​h​o​p​模​板​ l​b​i​文​件
    JS中 document.getElementById 对象
    JS CSS 网页 简单 右侧 悬浮
    css 简单 返回顶部 代码及注释说明
    php截取等长UFT8中英文混合字串
    Smarty中模板eq相等 ne、neq不相等, gt大于, lt小于
    iOS UI-集合视图(UICollectionView)
    iOS UI-表格控制器(UITableView)-基本使用
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/4249487.html
Copyright © 2011-2022 走看看