布局代码只有一张<ImageView/>
package com.example.propertyOfGang;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
/**
* @author acer
*本案例————多个动画同时执行
*/
/**
* Valueanimator与objectAnimator的区别在哪儿
* Valueanimator不会将动画作用给view,但是时间还是会计算,ValueAnimator在执行的过程中,
* 是不会将动画给View的,如果你创建了ValueAnimator,这个视图是不会动的,视图还是死的,但是时间会走,会执行。
* 那么什么时候使用ValueAnimator呢?一般执行比较复杂的复合动画的时候使用
*ObjectAnimator是 ValueAnimator的增强版,ObjectAnimator继承了ValueAnimator
*/
@SuppressLint("NewApi")
// 新的API,支持的最低版本是11
public class MainActivity extends Activity implements OnClickListener {
private ImageView iv_zhangxin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_zhangxin = (ImageView) findViewById(R.id.imageView1);
iv_zhangxin.setOnClickListener(this);
// 可以在这里查看有什么属性
// iv_zhangxin.setRotationX(rotationX);
// iv_zhangxin.setAlpha(alpha);
// iv_zhangxin.setTranslationX(translationX);
}
@Override
public void onClick(View v) {
// ValueAnimator.ofFloat(),你会发现动画执行没有作用对象,只有一个动画的执行过程,我们可以监听
// 这个动画的执行过程,根据动画的执行过程,我们做相应的处理
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
valueAnimator.setDuration(1000);
valueAnimator.start();
// 上面代码虽然创建了动画,但不知道动画执行到什么地方,
// 如何让视图出现动画呢?可以使用addUpdateListener监听动画执行过程。
valueAnimator.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
// 虽然valueAnimator没有作用到视图上,没有让视图动起来,但是valueanimator提供了一个监听,视图的动画
// 效果可以在监听里实现。
//指的是当前时间在某一刻对应的value的值,比如我当前运行了以毫秒,对应的是我走的距离值。
float animationValue= (Float) animation.getAnimatedValue();
iv_zhangxin.setScaleX(animationValue);
iv_zhangxin.setScaleY(animationValue);
}
});
}
}