1.FrameAnimaton
逐帧动画,顾名思义,将原画一帧帧播放出来以实现动画效果。可以用于周期性动画,或者GIF。不过需要注意的一点,需要将GIF打散才能使用FrameAnimation。
对应的XML
<?xml version="1.0" encoding="UTF-8"?>
<animation-list xmlns:android = "http://schemas.android.com/apk/res/android" android:repeatCount="infinite">
<item android:drawable="@drawable/mosquitofly0" android:duration="100"/>
<item android:drawable="@drawable/mosquitofly" android:duration="100"/>
</animation-list>
后台调用
public class MosEat extends ImageView{
public int currentX;
public int currentY;
public MosEat(Context context)
{
super(context);
}
public void setLocation(int top,int left)
{
this.setFrame(left, top, left+125, top+140);//继承父类ImageView的定义位置的方法
}
public void setPostion(int x,int y)
{
this.currentX=x;
this.currentY=y;
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
setFocusable(true);
}
}
Anim与View整合
MosEat mosF = new MosEat(this);
AnimationDrawable anim;
mosF.setBackgroundResource(R.anim.fly);//fly对应anim中的XML文件
anim = (AnimationDrawable) mosF.getBackground();
2.TweenAnimation
补间动画,定义后系统自行完成动画。
XML
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator">//interpolator设置播放方式
<translate android:fromXDelta="0"
android:toXDelta="0"
android:fromYDelta="0"
android:toYDelta="1500"
android:duration="3000"/>
</set>
Anim与View整和
private Swatter FlySwa1;
private Animation anim3;
anim3 = AnimationUtils.loadAnimation(this, R.anim.swatter);
FlySwa1.startAnimation(anim3);
如果调用Animation类可以直接调用监听器。