属性动画(二)

来源于网络这里写链接内容

属性动画的属性:

Duration:动画的持续时间
TimeInterpolation: 用于定义动画变化率的接口,所有插值器都必须实现此接口,如线性,非线性插值器。
TypeEvaluator: 用于定义属性值计算方式的接口,有int,float,color类型,根据属性的起始、结束值和插值一起计算出当前时间的属性值
Animation sets: 动画集合,即可以同时对一个对象应用多个动画,这些动画可以同时播放也可以对不同动画设置不同的延迟
Frame refreash delay: 多少时间刷新一次,即每隔多少时间计算一次属性值,默认为10ms,最终刷新时间还受系统进程调度与硬件的影响
Repeat Country and behavoir:重复次数与方式,如播放3次、5次、无限循环,可以让此动画一直重复,或播放完时向反向播放


import com.nineoldandroids.animation.ValueAnimator;

public class ValueAnimatorActivity extends Activity implements View.OnClickListener{

    private Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_value_animator);

        mButton = (Button) findViewById(R.id.btn1);
        mButton.setOnClickListener(this);



    }

    private void performAnimate(final View target, final int start, final int end) {
        ValueAnimator valueAnimator = ValueAnimator.ofInt(1,100);


        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

           private com.nineoldandroids.animation.IntEvaluator intEvaluator = new com.nineoldandroids.animation.IntEvaluator();

            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
              //获得当前动画的进度值,整型,1-100
                int currentValue = (Integer) valueAnimator.getAnimatedValue();
            //计算当前进度占整个动画的比例,浮点型0-1;
                float fraction = currentValue / 100f;

                //直接调用整型估值器通过比例计算出宽度,然后设置给Button
                target.getLayoutParams().width = intEvaluator.evaluate(fraction,start,end);
                target.requestLayout();



            }
        });
        valueAnimator.setDuration(5000).start();


    }

    @Override
    public void onClick(View v) {
        if(v==mButton){
            performAnimate(mButton, mButton.getWidth(), 500);

        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值