* 從開始狀態到結束狀態的一個過渡動畫
* 平移
* 透明
* 旋轉
* 縮放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); } }