public class MainActivity extends AppCompatActivity {
Button btn;
ValueAnimator valueAnimator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = findViewById(R.id.haha);
valueAnimator = ValueAnimator.ofInt(btn.getLayoutParams().width,1000); /* 图像变化范围*/
valueAnimator.setDuration(2000); /** 动画n秒中内完成*/
//时间时长
// 设置动画延迟播放时间
valueAnimator.setStartDelay(2000);
// 设置动画重复播放次数 = 重放次数+1
// 动画播放次数 = infinite时,动画无限重复
valueAnimator.setRepeatCount(1);
// 设置重复播放动画模式
// ValueAnimator.RESTART(默认):正序重放
// ValueAnimator.REVERSE:倒序回放
valueAnimator.setRepeatMode(ValueAnimator.REVERSE);
// 数值每次变化更新都会调用该方法
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
int currentValue = (Integer) animator.getAnimatedValue();
System.out.println("currentValue="+currentValue);
// 获得每次变化后的属性值
btn.getLayoutParams().width = currentValue;
// 每次值变化时,将值手动赋值给对象的属性
// 步骤4:刷新视图,即重新绘制,从而实现动画效果
btn.requestLayout();
}
});
valueAnimator.start();
// 启动动画
}
}