属性动画(二)

来源:互联网 发布:知乎就是个垃圾堆 编辑:程序博客网 时间:2024/05/23 02:00

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

属性动画的属性:

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);        }    }}
0 0
原创粉丝点击