您的位置:首页 > 其它

属性动画(二)

2016-04-29 09:16 148 查看

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

属性动画的属性:

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);

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: