当前位置: 代码迷 >> Android >> android动画片-Frame Animation
  详细解决方案

android动画片-Frame Animation

热度:139   发布时间:2016-04-28 02:50:28.0
android动画-Frame Animation

转载请注明出处: http://blog.csdn.net/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>



必须以animation-list为根节点,item为子节点,

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.csdn.net/detail/forwardyzk/8363995

效果图:






  相关解决方案