王学岗属性动画上(四)------ValueAnimator的应用

布局代码只有一张<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);
            }
        });
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值