安卓属性动画ValueAnimator与ObjectAnimator详解

直接上demo,   用法都在程序的注释里了,首先上五渣效果图,

安卓属性动画ValueAnimator与ObjectAnimator详解_第1张图片


布局代码:



    

        



主Activity

package com.example.animation;

import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

	private TextView textview ;
	private Button scaleX ;
	private Button scaleY ;
	private Button alpha ;
	private Button rotate ;
	private Button translationX ;
	private Button translationY ;
	private ValueAnimator va ;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.textview = (TextView) findViewById(R.id.textview) ;
		this.alpha = (Button) findViewById(R.id.alpha) ;
		this.rotate = (Button) findViewById(R.id.rotate) ;
		this.translationX = (Button)findViewById(R.id.translationX) ;
		this.translationY = (Button)findViewById(R.id.translationY) ;
		this.scaleX = (Button)findViewById(R.id.scaleX) ;
		this.scaleY  = (Button)findViewById(R.id.scaleY) ;
		this.scaleX.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				scaleX() ;
			}

		});
		
		this.scaleY.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				scaleY();
			}
		});
		this.translationY.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				translation(2) ;
			}
		});
		this.translationX.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				translation(1);
			}
		});
		this.alpha.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				alpha() ;
			}
		});

		this.rotate.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				rotate() ;
			}
		});
	}
	/*
	 * 旋转动画
	 */
	private void rotate() {
		this.va = ObjectAnimator.ofFloat(textview, "rotation", 0f,360f);   //从0度旋转到360度
		this.va.setDuration(5000) ;   //设置从0度到360度的旋转时间
		//this.va.setRepeatCount(5);   重复5次
		//this.va.setRepeatMode(ValueAnimator.REVERSE);  播放完毕直接翻转播放
		//this.va.setRepeatMode(ValueAnimator.RESTART);  播放完毕直接从头播放
		this.va.start();
	}

	/*
	 *左右移动 so  up and down  is translationY
	 *flag==1  zuoyou
	 *flag==2 shangxia
	 */
	private void translation(int flag) {
		if(flag == 1)
			this.va = ObjectAnimator.ofFloat(textview, "translationX", 0f,50f,5f);   //left and right
		else this.va = ObjectAnimator.ofFloat(textview, "translationY", 0f,50f,5f);   //left and right
		this.va.setDuration(1500) ;   //设置从0度到360度的旋转时间
		this.va.setRepeatCount(5);  // 重复5次
		//this.va.setRepeatMode(ValueAnimator.REVERSE);  播放完毕直接翻转播放
		//this.va.setRepeatMode(ValueAnimator.RESTART);  播放完毕直接从头播放
		this.va.start();
	}


	/*
	 *上下移动移动 
	 */
	private void translationY() {
		this.va = ObjectAnimator.ofFloat(textview, "translationY", 0f,50f,5f);   //left and right
		this.va.setDuration(1500) ;   //设置从0度到360度的旋转时间
		this.va.setRepeatCount(5);  // 重复5次
		//this.va.setRepeatMode(ValueAnimator.REVERSE);  播放完毕直接翻转播放
		//this.va.setRepeatMode(ValueAnimator.RESTART);  播放完毕直接从头播放
		this.va.start();
	}

	/*
	 * 改变透明度(渐渐消失)
	 */
	private void alpha() {
		this.va = ObjectAnimator.ofFloat(this.textview,"alpha",1f,0f,1f) ; //透明度从1变成0然后变成1,以此类推。。
		this.va.setDuration(5000) ;   //设置变化间隔
		//this.va.setRepeatCount(5);   重复5次
		//this.va.setRepeatMode(ValueAnimator.REVERSE);  播放完毕直接翻转播放
		//this.va.setRepeatMode(ValueAnimator.RESTART);  播放完毕直接从头播放
		this.va.start();
	}

	/*
	 * 左右拉伸
	 */
	private void scaleX() {
		this.va = ObjectAnimator.ofFloat(this.textview,"scaleX",1f,5f,1f) ;
		this.va.setDuration(5000) ;
		//this.va.setRepeatCount(5);   重复5次
		//this.va.setRepeatMode(ValueAnimator.REVERSE);  播放完毕直接翻转播放
		//this.va.setRepeatMode(ValueAnimator.RESTART);  播放完毕直接从头播放
		this.va.start();

	}
	
	/*
	 * 上下拉伸
	 */
	private void scaleY() {
		this.va = ObjectAnimator.ofFloat(this.textview,"scaleY",1f,5f,1f) ;
		this.va.setDuration(5000) ;
		//this.va.setRepeatCount(5);   重复5次
		//this.va.setRepeatMode(ValueAnimator.REVERSE);  播放完毕直接翻转播放
		//this.va.setRepeatMode(ValueAnimator.RESTART);  播放完毕直接从头播放
		this.va.start();

	}
}



你可能感兴趣的:(android)