補間動畫示例代碼

* 從開始狀態到結束狀態的一個過渡動畫
  * 平移
  * 透明
  * 旋轉
  * 縮放
java

package com.example.tween;

 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;

public class MainActivity extends Activity {

   private ImageView  iv;
   private AlphaAnimation   a;
   private TranslateAnimation  t;
   private RotateAnimation  r;
   private ScaleAnimation   s;
   @Override

   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      iv = (ImageView) findViewById(R.id.iv);
   }

   /**
    * 透明度    
    * 第一個參數fromAlpha:動畫起始時的透明度
    * 第二個參數toAlpha: 動畫結束時的透明度
    */
   public void alpha(View v) {
      a = new AlphaAnimation(0, 1);
      // 設置動畫的時間
      a.setDuration(500);
      // 設置動畫的播放模式
      a.setRepeatMode(Animation.REVERSE);
      // 設置動畫的重複次數
      a.setRepeatCount(4);
      // 開始播放動畫
      iv.startAnimation(a);
   }

 
   /**

    * 位移動畫
   * 參數1,參數3,參數5,參數7: 設置參照點的方式(相對本身)Animation.RELATIVE_TO_SELF 
    * 參數2:x軸起始移動的位置 (0表示原圖位置左上角x軸的座標)
    * 參數4:x軸中止移動的位置(2表示移動原圖寬度的兩倍)
    * 參數6:y軸起始移動的位置 (0表示原圖位置左上角y軸的座標) 
    * 參數8:y軸中止移動的位置(2表示移動原圖高度的兩倍)
    * TranslateAnimation tras = new TranslateAnimation(
    * Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2,
    * Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2); 
    */

   public void translate(View view) {
      t = new TranslateAnimation(0, 100, 0, 100);
      // 設置動畫的時間
      t.setDuration(500);
      // 設置動畫的播放模式
      t.setRepeatMode(Animation.REVERSE);
      // 設置動畫的重複次數
      t.setRepeatCount(4);
      // 動畫作完以後停在結束位置
      t.setFillAfter(true);
      // 開始播放動畫
      iv.startAnimation(t);

   }


   /**
    * 旋轉動畫
    */

   public void rotate(View view) {
//    RotateAnimation r = new RotateAnimation(0, 270);
      /*
       * 參數1:旋轉的起始角度
       * 參數2:旋轉的終止角度
       * 參數3:旋轉中心的x軸取值參照方式
       * 參數4:中心點x軸的取值(0.5f表示相對與原圖的0.5倍)
       * 參數5:旋轉中心的y軸取值參照方式
       * 參數6:中心點y軸的取值(0.5f表示相對與原圖的0.5倍)
       */

      r = new RotateAnimation(360, 0,
      Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
      r.setDuration(300);
      r.setRepeatCount(2);
      r.setRepeatMode(Animation.REVERSE);
      // 開始播放動畫
      iv.startAnimation(r);
   }

   
   /**
    * 縮放
    */

   public void scale(View view){

      /*
       * 參數1:x方向起始大小(1f表示原圖大小) 
       * 參數2:x方向終止大小(0.2f表示原圖的0.2倍)
       * 參數3:y方向起始大小(1f表示原圖大小) 
       * 參數4:y方向終止大小(0.2f表示原圖的0.2倍) 
       * 參數5:縮放中心點x軸取值的參照方式
       * 參數6: 中心點x軸的取值(0.5f表示相對與原圖的0.5倍) 
       * 參數7:縮放中心點y軸取值參照方式
       *  參數8:中心點y軸的取值(0.5f表示相對與原圖的0.5倍)
       */

      s = new ScaleAnimation(1,10, 1, 100f,
            Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
      // 設置顯示時間長度
      s.setDuration(20);
      // 設置重複次數
      s.setRepeatCount(3);
      // 設置動畫重複的模式
      s.setRepeatMode(Animation.REVERSE);
      // 在ImageView上播放動畫
      iv.startAnimation(s);
   }

   /**
    * 動畫的合集
    */

   public void set(View v){
      AnimationSet set = new AnimationSet(false);
      set.addAnimation(a);
      set.addAnimation(r);
      set.addAnimation(t);
      set.addAnimation(s);
      // 在ImageView上播放動畫
      iv.startAnimation(set);
   }
}
相關文章
相關標籤/搜索