安卓中的帧动画是按顺序预先设置好的一组连贯的图片组合而成的动画,类似于电影画面。系统提供了AnimationDrawable来使用帧动画。帧动画的使用步骤比较简单,通常有两种方式,1是通过xml预先定义好,2是通过动态代码加载相关的动画资源。
第一种方式是通过xml定义帧动画:
1:在res目录下的Drawable资源文件下通过xml定义一个drawable文件.里面是一系列的图片资源。类似于下面的frame_anim_3.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="@mipmap/page_loading_01" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_02" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_03" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_04" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_05" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_06" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_07" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_08" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_09" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_10" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_11" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_12" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_13" android:duration="100"/>
<item android:drawable="@mipmap/page_loading_14" android:duration="100"/>
</animation-list>
<strong>注意:</strong>其中父标签中的oneshot属性表示的是重复播放还是只播放一次,当其值为true时,动画只播放一次;当其值为false,动画将无限循环播放;
子标签中drawable=""表示图片的资源,duration=""表示该帧画面执行的时长。
2:在代码中设置相关资源文件,并启动动画。
animtion3= (ImageView) findViewById(R.id.animtion3);
animtion3.setBackgroundResource(R.drawable.frame_anim_3);//设置drawable资源
AnimationDrawable drawable3= (AnimationDrawable) animtion3.getBackground();
drawable3.start();//开始播放
第二种方式是动态代码创建。如下:
animtion3= (ImageView) findViewById(R.id.animtion3);
drawable3=new AnimationDrawable();
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_01),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_02),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_03),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_04),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_05),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_06),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_07),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_08),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_09),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_10),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_11),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_12),100);
drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_13),100); drawable3.addFrame(getResources().getDrawable(R.mipmap.page_loading_14),100);
animtion3.setImageDrawable(drawable3);
drawable3.start();//开始播放
AnimationDrawable常用API:
void start() - 开始播放动画
void stop() - 停止播放动画
addFrame(Drawable frame, int duration) - 添加一帧,并设置该帧显示的持续时间
void setOneShoe(boolean flag) - false为循环播放,true为仅播放一次
boolean isRunning() - 是否正在播放
frame.gif
下面是该例子的frame_anim_3.xml中的图片;
page_loading_01.png page_loading_02.png page_loading_03.png
page_loading_04.png page_loading_05.png page_loading_06.png page_loading_07.png page_loading_08.png page_loading_09.png page_loading_10.png page_loading_11.png page_loading_12.png page_loading_13.png page_loading_14.png
网友评论