android的动画资源要在res文件夹下新建个文件夹anim ,然后用R.anim.XXX访问
public class Butterfly extends Activity{
float curX=0,curY=30;float nextX=0,nextY=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageView fly= (ImageView)findViewById(R.id.butterfly);
final AnimationDrawable img= (AnimationDrawable) fly.getBackground();
final Handler handler=new Handler(){
public void handleMessage(Message msg){
if(msg.what==1){
if(nextX>500){
curX=0;
nextX=0;
}else{
nextX+=10;
}
nextY=(float)Math.random()*10-5;
TranslateAnimation trans=new TranslateAnimation(curX,nextX,curY,nextY); //java 生成位移变化的动画,补间动画的其他三种看下面的xml中定义的,都有两种方式
curX=nextX;
curY=nextY;
trans.setDuration(3000);
fly.startAnimation(trans); //补间动画的调用
}
}
};
fly.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
img.start(); //逐帧动画的调用
new Timer().schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(1);
}
}, 0,200);
}}
);
}
}
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/butterfly_f01" android:duration="120" />
<item android:drawable="@drawable/butterfly_f02" android:duration="120" />
<item android:drawable="@drawable/butterfly_f03" android:duration="120" />
<item android:drawable="@drawable/butterfly_f04" android:duration="120" />
<item android:drawable="@drawable/butterfly_f05" android:duration="120" />
<item android:drawable="@drawable/butterfly_f06" android:duration="120" />
</animation-list>
=== 补间动画
<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定动画匀速改变 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<!-- 定义缩放变换 -->
<scale android:fromXScale="1.0"
android:toXScale="0.01"
android:fromYScale="1.0"
android:toYScale="0.01"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="true"
android:duration="3000"/>
<!-- 定义透明度的变换 -->
<alpha
android:fromAlpha="1"
android:toAlpha="0.05"
android:duration="3000"/>
<!-- 定义旋转变换 -->
<rotate
android:fromDegrees="0"
android:toDegrees="1800"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"/>
</set>