首页 > 技术文章 > Android:控件动态变化

lspis 2021-10-19 09:08 原文

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

 

推荐阅读