如果需要做個圖片移動的動畫,利用Animation就可以達到許多效果
以單就純移動來說,可以利用TranslateAnimation來控制物件移動的路線
Java:
import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
public class Am_testActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView img = (ImageView) findViewById( R.id.img);
//動畫路徑設定(x1,x2,y1,y2)
Animation am = new TranslateAnimation(10,200,10,500);
//動畫開始到結束的時間,2秒
am.setDuration( 2000 );
// 動畫重覆次數 (-1表示一直重覆,0表示不重覆執行,所以只會執行一次)
am.setRepeatCount( 0 );
//將動畫寫入ImageView
img.setAnimation(am);
//開始動畫
am.startNow();
}
}
那如果動畫複雜一點的呢?
可以寫一個專門設定動畫的xml檔,再利用AnimationUtils將動畫設定檔讀入
Java:
import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class Am_testActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView img = (ImageView) findViewById( R.id.img);
//讀入動畫設定
Animation am = AnimationUtils.loadAnimation(this, R.layout.anim);
//將動畫寫入ImageView
img.setAnimation(am);
//開始動畫
am.startNow();
}
}
動畫設定檔anim.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 從不透明到透明 重覆執行 -->
<alpha android:fromAlpha="1.0"
android:toAlpha="0.0"
android:repeatCount="-1"
android:duration="2000" />
<!-- 物件旋轉 重覆執行-->
<rotate android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50"
android:pivotY="50"
android:repeatCount="-1"
android:duration="2000" />
</set>