上面已经介绍了TWEEN的动画,下面就来介绍另一种动画形式逐帧动画的实现方式
定义AnimationDrawable对象,并向其中添加每帧的图像,从而实现帧播放的动画效果,实现方式如下
//定义animationDrawable对象
AnimationDrawable anima=new AnimationDrawable();
for(int i=1;i<=2;i++){
//获取图片id
int id = getResources().getIdentifier("pic"+i, "drawable", this.getContext().getPackageName());
//设置每帧动画
Drawable mframe=getResources().getDrawable(id);
//第一个参数为每帧的动画,第二个参数为该帧动画的显示时间
anima.addFrame(mframe, 500);
}
//true为不重复播放,false反之
anima.setOneShot(false);
//设置显示动画到屏幕
this.setBackgroundDrawable(anima);
//开始播放动画
anima.start();
逐帧动画和Tween动画一样同样可以通过xml来实现,实现方式如下,同样是在res/anim下创建xml文件,item为每帧动画,drawable是每帧需要载入的画面,duration和上面一样是播放该帧画面的时间,oneshot为重复播放设定,也和函数时一致,false重复播放
<?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/pic1" android:duration="500"></item>
<item android:drawable="@drawable/pic2" android:duration="500"></item>
</animation-list>
调用xml的代码如下:
AnimationDrawable manima=null;
//通过imgview类来载入帧动画,并将值赋给AnimationDrawable对象
ImageView img=new ImageView(this.getContext());
img.setBackgroundResource(R.anim.animation);
manima =(AnimationDrawable) img.getBackground();
this.setBackgroundDrawable(manima);
manima.start();
帧动画的基本实现过程就介绍完了,需要注意的一点的就是缓存,缓存大小不够的话,程序会直接down掉,所以需要根据实际情况添加缓存的大小