`

Android AnimationDrawable运行的几种方式

 
阅读更多

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

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

   

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

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

[java] view plaincopy 

    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启动时会自动运行动画) 

[java] view plaincopy 

    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启动时会自动运行动画) 

[java] view plaincopy 

    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启动时会自动运行动画) 

[java] view plaincopy 

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

分享到:
评论

相关推荐

    Android AnimationDrawable动画实例

    NULL 博文链接:https://gqdy365.iteye.com/blog/2179048

    Android应用通过AnimationDrawable实现View的动画效果

    AnimationDrawable是实现Drawable animations的基本类。推荐用XML文件的方法实现Drawable动画,不推荐在代码中实现。这种XML文件存放在工程中res/drawable/目录下。XML文件的指令(即属性)为动画播放的顺序和时间间隔...

    Android中AnimationDrawable使用的简单实例

    介绍了Android中AnimationDrawable使用的简单实例,有需要的朋友可以参考一下

    Android解决大量帧动画内存泄漏问题

    帧动画太多造成内存泄漏问题,内含所需的JAR包:org.apache.commons.io.IOUtils,将Inputstream转为byte字节数组,减少内存泄漏 和关键代码,仅供参考,如有建议请在下方留言或添加咨询~~~

    AnimationDrawable

    展示一系列的drawable动画:创建一个drawable动画,你要创建一个XML文件,该文件列出了组成动画的drawable。

    Android 之 Frame逐帧动画

    NULL 博文链接:https://sunzone.iteye.com/blog/1998083

    Android播放动画之使用AnimationDrawable播放帧动画工程

    使用系统带的AnimationDrawable类来播放动画必须将你需要播放的动画打成一帧一帧的图片保存起来,然后在xml文件中表示出每帧图片,这样就可以提前将资源图片加载内存中了。...

    AnimationDrawable动画

    使用AnimationDrawable的动画效果

    Android之AnimationDrawable简单模拟动态图

    主要为大家详细介绍了Android之AnimationDrawable简单模拟动态图的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    android listView复用导致item上面动画的错乱

    android listView复用导致item上面动画的错乱。网上大部分都是写的item上面显示静态图片的例子,我这个是解决显示动态图片时复用导致的动画显示错乱问题。问题描述:假如一屏可以显示10个item项,如果第一个正在播放...

    Android AnimationDemo_DrawableAnimation帧动画

    DrawableAnimation帧动画的Demo。其实不下载用我的代码,自己随便加上图片一样可以在你的android项目中运行。我想不要资源分了,但是现在好像不能设置为0资源分啊,最小就是2。请理解

    点击动画AnimationDrawable、无限转动RotateAnimation

    点击动画AnimationDrawable、无限转动RotateAnimation

    Android下逐帧动画的Demo

    Android下逐帧动画的Demo,详细参见博客:http://www.cnblogs.com/plokmju/p/android_AnimationDrawable.html

    Android 播放Gif图片动画【源代码】.rar

    Android 播放Gif图片动画【源代码】,在Android 中是不支持直接使用Gif 图片关联播放帧动画,Android 提供了另外一种解决的办法,就是使用AnimationDrawable 这一函数使其支持逐帧播放,我们使用一款动画分割软件...

    Android Animation Frame逐帧动画

    上次提供了Animation动画其一Tween补间动画的源代码,这次提供其二Frame动画的源代码(以xml形式实现的Demo。笔者资源中另有以直接编码的形式实现Frame动画的Demo)。

    疯狂Android讲义源码

     1.4.2 通过ADT运行Android应用 23  1.5 Android应用结构分析 24  1.5.1 创建一个Android应用 24  1.5.2 自动生成的R.java 26  1.5.3 res目录说明 27  1.5.4 Android应用的清单文件:  AndroidManifest.xml ...

    Android之泡泡效果bubble.rar

    import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; ...

    Android代码-SilkyAnimation

    用SurfaceView来播放帧动画,避免在很多帧的情况下使用AnimationDrawable带来的OOM和卡顿问题。支持任意多帧的动画。 使用 Usage Gradle引入 implementation 'com.yuyashuai.android:silkyanimation:1.1.6' 用法 ...

Global site tag (gtag.js) - Google Analytics