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

本文介绍了使用AnimationDrawable时遇到的问题,即直接在onClick、onStart、onResume中调用start方法无法启动动画。文章提供了四种有效启动帧动画的方法,确保在Activity启动时自动播放动画。
摘要由CSDN通过智能技术生成

这个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; //注意此行返回的值

      }

   };

 

 第二种方式启动动画:(在Acti

AnimationDrawable是一个用于实现帧动画的类。它允许您将多张图片以特定的顺序显示在屏幕上,从而创建连续的动画效果。 要使用AnimationDrawable,首先需要在XML或Java代码中定义一个AnimationDrawable对象,并将每一帧图片添加到其中。然后,您可以通过调用start()方法启动动画,或者通过调用stop()方法停止动画。 以下是一个使用AnimationDrawable创建帧动画的示例: 1. 在XML文件中定义AnimationDrawable对象和每一帧图片: ```xml <animation-list android:id="@+id/animation" android:oneshot="false"> <item android:drawable="@drawable/frame1" android:duration="100"/> <item android:drawable="@drawable/frame2" android:duration="100"/> <item android:drawable="@drawable/frame3" android:duration="100"/> <!-- 添加更多的帧图片 --> </animation-list> ``` 2. 在Java代码中获取AnimationDrawable对象,并将其应用到ImageView上: ```java ImageView imageView = findViewById(R.id.imageView); AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable(); ``` 3. 启动动画: ```java animationDrawable.start(); ``` 这样,您就可以在ImageView上显示动画了。每一帧图片将按照指定的持续时间进行切换,从而呈现出动画效果。 请注意,AnimationDrawable可以通过调用stop()方法停止动画。此外,您还可以设置动画是否循环播放,通过将android:oneshot属性设置为true或false来实现。 希望这个例子能够帮助您理解如何使用AnimationDrawable创建帧动画!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值