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

转载 2012年07月04日 11:02:05

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

    }


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


其他文章:

http://www.open-open.com/lib/view/open1329385807906.html

http://blog.csdn.net/fuuckwtu/article/details/6518571

转Android AnimationDrawable运行的几种方式

Android AnimationDrawable运行的几种方式 分类 编程技术 项目开发用到了AnimationDrawable,调用start后没有运行,很纳闷。google搜了下。记录...
  • jeanliam
  • jeanliam
  • 2017年03月28日 22:35
  • 488

Android帧动画animation-list在ProgressBar上失效的解决办法

做Loading的时候,帧动画我们经常用到,主要是一些比较复杂的动画,比如小人跑动,人物翻转等等; 可以发现这些写了之后可以基本上满足常用手机的需求,但是最近我发现在一些手机上会出现如下2个问题: ...
  • tmacsky
  • tmacsky
  • 2016年04月28日 16:13
  • 3415

解决AnimationDrawable动画不运行的问题

解决AnimationDrawable动画不运行的问题 在Activity的onCreate()或者onStart() ,调用AnimationDrawable.start()方法,动画是...
  • d_o_n_g2
  • d_o_n_g2
  • 2016年04月27日 20:03
  • 916

AnimationDrawable在2.2系统上开始动画后无法显示的问题

今天在尝试使用AnimationDrawable进行Frame Animation的效果时,发现了一个问题。 先看实际代码 @Override public void onWi...
  • ft2028739
  • ft2028739
  • 2013年01月11日 15:05
  • 776

Android 逐帧动画AnimationDrawable 内存溢出的一个解决方法

Android 逐帧动画AnimationDrawable 内存溢出的一个解决方法
  • zjc_jiancheng
  • zjc_jiancheng
  • 2016年08月10日 17:10
  • 3871

Android使用帧动画内存溢出解决方法

最近在项目遇到的动画效果不好实现,就让UI切成图,采用帧动画实现效果,但是在使用animation-list时,图片也就11张,每张图片大概560k左右,结果内存溢出,崩溃 了,自己用了三张都崩溃;拿...
  • daitu_liang
  • daitu_liang
  • 2016年08月27日 17:31
  • 4940

Android DrawableAnimation逐帧动画加载多图(OOM的解决)

想做一个逐帧动画,用了一百来张图片,结果内存溢出了,找了半天最后算是解决了。 本来是在drawable里面写一个animation-list,设置ImageView的backgroud, ...
  • lxr_17
  • lxr_17
  • 2016年07月21日 21:20
  • 1745

Android学习笔记进阶十一图片动画播放(AnimationDrawable)

大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它。它的使用更加简单,只需要创建一个 AnimationDrawabledF对象来表示Frame动画,然后通过addFram...
  • SJF0115
  • SJF0115
  • 2012年02月16日 17:26
  • 6795

AnimationDrawable使用简介

Drawable animation可以加载Drawable资源实现帧动画。AnimationDrawable是实现Drawable animations的基本类。推荐用XML文件的方法实现Drawa...
  • xieluoxixi
  • xieluoxixi
  • 2017年03月07日 13:59
  • 1759

AnimationDrawable动画图片资源回收

private static void tryRecycleAnimationDrawable(AnimationDrawable animationDrawable) { if (animati...
  • huangrangg12
  • huangrangg12
  • 2015年03月23日 11:53
  • 3189
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决使用AnimationDrawable无法播放动画的问题
举报原因:
原因补充:

(最多只允许输入30个字)