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(); // 启动动画 } }