`
3895177
  • 浏览: 23683 次
社区版块
存档分类
最新评论

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

 
阅读更多

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

第一种方式启动帧动画:(在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();

 

@Override

    public void onWindowFocusChanged(boolean hasFocus)

    {

        animationDrawable.start();

        super.onWindowFocusChanged(hasFocus);

    }

 

 

 

分享到:
评论

相关推荐

    解决帧动画OOM问题

    在Android开发中,帧动画(Frame Animation)是一种常见的实现动态效果的方法,它通过连续播放一系列静态图片来模拟动画效果。然而,在处理大量的帧动画时,可能会遇到内存溢出(Out Of Memory, OOM)的问题,这严重...

    Android 序列帧动画,开始,结束监听的解决-IT计算机-毕业设计.zip

    这个项目提供了一种解决序列帧动画监听问题的方案,对于Android移动应用开发的学习者来说,这是一个很好的实践案例,可以帮助理解如何在实际项目中运用动画效果并控制其行为。同时,这也是毕业设计或论文研究的一个...

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

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

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

    问题描述:假如一屏可以显示10个item项,如果第一个正在播放动画,此时往下滚动,当第一个item不可见时会发现下面新出来的item上面的动画会动。该资源就是解决这个问题。看到的网友有福了,附件解压后即可载入studio...

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

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

    仿uber启动动画,解决帧动画oom

    本知识点将探讨如何在Android中实现类似于Uber的启动动画,同时解决帧动画(Frame Animation)可能导致的内存溢出(Out of Memory,简称OOM)问题。 首先,帧动画是Android中一种常见的动画形式,它通过连续播放一...

    Android 序列帧动画,开始,结束监听的解决Demo.zip

    要实现动画的开始和结束监听,可以使用`AnimationDrawable`类,它是一个可绘制对象,可以作为View的背景,并提供动画功能。在代码中获取这个对象,然后设置监听器: ```java ImageView imageView = findViewById...

    Android Animation Frame逐帧动画2

    在Android中,我们可以使用`AnimationDrawable`类来实现Frame动画。 **实现方式:** 1. **XML方式**:通常在res/anim目录下创建一个xml文件,定义帧的顺序、持续时间和重复行为。例如,可以设置`&lt;animation-list&gt;`...

    AS 播放帧动画ImageView:FAImageView

    在Android Studio中,如果直接使用`AnimationDrawable`或`ViewFlipper`来实现帧动画,那么在开启混淆时可能会导致动画无法正常工作,因为混淆会改变类和方法的名称,影响到动画的执行流程。`FAImageView`通过特殊的...

    frameAnimation动画效果

    虽然帧动画简单易用,但过度使用或不恰当的配置可能会导致性能问题。尽量减少帧的数量,优化图片质量,避免在主线程中进行大量计算。此外,如果动画是无限循环的,可以考虑使用`ObjectAnimator`或`PropertyAnimator...

    dialog 使用帧动画,解决了不能满屏

    标题"dialog 使用帧动画,解决了不能满屏"所指出的问题,是在Dialog中应用帧动画来实现全屏显示的一种解决方案。 帧动画是Android中的一个动画类型,它通过连续播放一系列图像(帧)来创建动态效果。在Dialog中使用...

    Android应用源码之序列帧动画,开始,结束监听的解决.rar

    在Android开发中,序列帧动画(帧动画)是一种常见的动态效果实现方式,它通过连续播放一系列静态图片来形成动画效果。本资源包“Android应用源码之序列帧动画,开始,结束监听的解决”着重讨论如何在Android应用程序...

    动画图片资源.rar

    当标准动画无法满足需求时,可以自定义动画类,继承自Animation或Animator,并重写相关方法。例如,实现一个平滑滚动的ListView项动画,可能需要自定义一个ValueAnimator的子类。 7. 优化动画性能: 考虑到性能...

    序列帧动画,开始,结束监听的解决

    `AnimationDrawable`提供了`start()`和`stop()`方法来控制动画的播放,同时我们可以通过重写`AnimationDrawable`的`startListening()`和`end()`方法来添加监听。 ```java frameAnimation.start(); frameAnimation....

    安卓动画效果相关-android一个雷达动画.zip

    在安卓开发中,动画效果是提升用户体验的关键因素之一。这个压缩包"安卓动画效果相关-android一个雷达...同时,由于源码可能需要自行调整才能运行,这为学习过程增加了实践环节,有助于提升你的编程和问题解决能力。

    Android应用源码之序列帧动画,开始,结束监听的解决.zip

    本资料包聚焦于如何在Android应用中使用序列帧动画,并解决开始和结束监听的问题。 首先,让我们了解序列帧动画的基本原理。在Android中,可以使用`AnimationDrawable`类来实现序列帧动画。`AnimationDrawable`是一...

    帧动画Demo

    然而,需要注意的是,帧动画可能会消耗较多的内存和CPU资源,因此在性能敏感的场景下,可能需要考虑使用更高效的动画解决方案,如`ObjectAnimator`或`PropertyAnimator`。 总之,"帧动画Demo"是一个展示如何在...

    Pro Android学习:2D动画小例子

    在Android开发中,2D动画是提升用户体验的重要手段,它能为用户界面带来生动活泼的效果。本示例“Pro Android学习:2D动画小例子”...同时,理解动画原理也有助于解决动画相关的性能问题,从而提供更流畅的用户体验。

    Android 动画顺序播放源码-IT计算机-毕业设计.zip

    这个项目不仅包含了实际的源码,还可能关联了一篇毕业设计论文,其中详细阐述了动画实现的原理、设计思路以及可能遇到的问题和解决方案。通过阅读论文,可以加深对源码的理解。 7. App开发: 作为一个完整的App...

Global site tag (gtag.js) - Google Analytics