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();
	}
}

 

posted on 2017-02-24 10:02  LoaderMan  阅读(295)  评论(0编辑  收藏  举报

导航