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