ObjectAnimator屬性動畫示例代碼

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
 
	private ImageView	iv;
	private ObjectAnimator	a;
	private ObjectAnimator	t;
	private ObjectAnimator	r;
	private ObjectAnimator	s;
 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		iv = (ImageView) findViewById(R.id.iv);
		iv.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Toast.makeText(MainActivity.this, "點我", 0).show();
			}
		});
	}
 
	/**
	 * 透明度
	 */
	public void alpha(View v) {
		a = ObjectAnimator.ofFloat(iv, "alpha", 0, 1, 0.5f,
				0.1f, 0.8f);
		// 設置時間
		a.setDuration(1000);
		// 設置動畫的重複次數
		a.setRepeatCount(1);
		a.start();
	}
 
	/**
	 * 位移動畫
	 */
	public void translate(View view) {
		/**
		 * target :座動畫的目標控件 propertyName :動畫的屬性名 values :屬性值
		 */
		// ObjectAnimator t = ObjectAnimator.ofFloat(iv, "translationX",
		// 0,100,20,80,10,200);
		
		t = ObjectAnimator.ofFloat(iv, "translationY", 0, 100,
				20, 80, 10, -50);
		// 設置時間
		t.setDuration(1000);
		// 設置動畫的重複次數
		t.setRepeatCount(1);
		// t.setRepeatMode(ObjectAnimator.REVERSE);
		// 開始播放動畫
		t.start();
	}
 
	/**
	 * 旋轉動畫
	 */
	public void rotate(View view) {
		// ObjectAnimator r = ObjectAnimator.ofFloat(iv, "rotation", 0, 45, 270,
		// ObjectAnimator r = ObjectAnimator.ofFloat(iv, "rotationX", 0, 45,
		// 270,360, 100);
		
		r = ObjectAnimator.ofFloat(iv, "rotationY", 0, 45, 270,
				360, 100);
		// 設置時間
		r.setDuration(1000);
		// 設置動畫的重複次數
		r.setRepeatCount(1);
		// t.setRepeatMode(ObjectAnimator.REVERSE);
		// 開始播放動畫
		r.start();
	}
 
	/**
	 * 縮放
	 */
	public void scale(View view) {
//		ObjectAnimator s = ObjectAnimator.ofFloat(iv, "scaleX",10, 1, 0, 5,1);
		
		s = ObjectAnimator.ofFloat(iv, "scaleY",5, 1, 0, 5,1);
		// 設置時間
		s.setDuration(2000);
		// 設置動畫的重複次數
		s.setRepeatCount(1);
		// t.setRepeatMode(ObjectAnimator.REVERSE);
		// 開始播放動畫
		s.start();
	}
 
	/**
	 * 動畫的合集
	 */
	public void set(View v) {
		AnimatorSet set = new AnimatorSet();
		//添加要播放的動畫,一塊兒裝x一塊兒飛
//		set.playTogether(a,t,r,s);
		//一個裝x一個飛
		set.playSequentially(a,t,r,s);
		//設置目標
		set.setTarget(iv);
		//開始播放動畫
		set.start();
	}
}
相關文章
相關標籤/搜索