转载请注明出处: http://blog.youkuaiyun.com/forwardyzk/article/details/42739281
Drawable Animation(Frame Animation):帧动画,连续播放和播放gif图片的效果是一样的。
可以使用xml构建Drawable Animation,也可以使用代码编写Drawable Animation动画
下面先介绍使用xml构建Drawable Animation动画
在res目录下新建anim目录
创建xml文件
例如:
drwable_fr.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item
android:drawable="@drawable/bird1"
android:duration="300"/>
<item
android:drawable="@drawable/bird2"
android:duration="300"/>
<item
android:drawable="@drawable/bird3"
android:duration="300"/>
<item
android:drawable="@drawable/bird4"
android:duration="300"/>
<item
android:drawable="@drawable/bird5"
android:duration="300"/>
<item
android:drawable="@drawable/bird6"
android:duration="300"/>
<item
android:drawable="@drawable/bird7"
android:duration="300"/>
<item
android:drawable="@drawable/bird8"
android:duration="300"/>
</animation-list>
android:oneshot="false":连续播放,true:表示只播放一次
android:drawable="@drawable/bird1" 制定播放的帧图片
android:duration="300" 帧播放的时间
在代码中指定View的播放动画
image = (ImageView) findViewById(R.id.image);
image.setBackgroundResource(R.anim.drwable_fr);
drwableAnimation = (AnimationDrawable) image.getBackground();
drwableAnimation.start();
drwableAnimation.stop();
先指定帧动画资源为View的背景,获取背景,转换为AnimationDrawable,
start()开始播放,stop为停止播放
下面介绍使用代码构建Drwable Animation
anim = new AnimationDrawable();
for (int i = 1; i <= 3; i++) {
// 根据资源名称和目录获取R.java中对应的资源ID
int id = getResources().getIdentifier("jump" + i, "drawable",
getPackageName());
// 根据资源ID获取到Drawable对象
Drawable drawable = getResources().getDrawable(id);
// 将此帧添加到AnimationDrawable中
anim.addFrame(drawable, 300);
}
anim.setOneShot(false); // 设置为loop
int id = getResources().getIdentifier("jump" + i, "drawable",getPackageName());
第一个参数为:图片的名字,第二个参数:图片所在的目录,第三个参数:应用的包名
形成Drawable对象:Drawable drawable = getResources().getDrawable(id);
添加到动画中:anim.addFrame(drawable, 300);
anim.setOneShot(false);设置是否循环播放,false:是,true,只播放一次
注意:
不要在onCreate中调用start,因为AnimationDrawable还没有完全跟Window相关联,如果想要界面显示时就开始动画的话,可以在onWindowFoucsChanged()中调用start()。
源代码下载: http://download.youkuaiyun.com/detail/forwardyzk/8363995
效果图: