如果需要做個圖片移動的動畫,利用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>