关闭

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

标签: 属性动画
262人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:27106次
    • 积分:1429
    • 等级:
    • 排名:千里之外
    • 原创:120篇
    • 转载:0篇
    • 译文:0篇
    • 评论:6条
    文章分类
    最新评论