Android Studio:需要帮助制作进度条动画
Android Studio: Need help animating a progressbar
我有一个圆形进度条,它是用可绘制对象制作的,其值从 0-100(含)。当我加载我的 activity 时,我想用从 0 到我想要的值的值“填充”进度条。我为此使用 CountdownTimer
。
问题是,即使我将该值设置为最大值 100(或任何其他值),进度条也不会一直填满。这是我的代码:
seekbar = (ProgressBar) findViewById(R.id.progressBar);
seekbar.setMax(100);
final int desiredvalue=100;
CountDownTimer countDownTimer =
new CountDownTimer(1500, 20) {
int startingvalue=0;
public void onTick(long millisUntilFinished) {
float progressPercentage = (desiredvalue*20)/1500;
seekbar.setProgress(startingvalue+=progressPercentage);
}
@Override
public void onFinish() {
}
};
countDownTimer.start();
}
事情是这样的:Open me!
据我了解,您希望根据您的要求设置进度值。
您可以使用 ValueAnimator
这样的东西:
progressBar = findViewById(R.id.my_pb);
ValueAnimator animation = ValueAnimator.ofFloat(0f, 100f);
animation.setDuration(1000);
animation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator updatedAnimation) {
Integer animatedValue = Math.round( (float)updatedAnimation.getAnimatedValue());
progressBar.setProgress(animatedValue);
}
});
animation.start();
的更多详细信息
我认为只需对您的代码稍作修改即可解决此问题。只需更改您的 onTick
代码,如下所示。
seekbar = (ProgressBar) findViewById(R.id.progressBar);
seekbar.setMax(100);
final int desiredvalue=100;
CountDownTimer countDownTimer = new CountDownTimer(1500, 20) {
public void onTick(long millisUntilFinished) {
float progressPercentage = (desiredvalue*(1500L-millisUntilFinished))/1500;
seekbar.setProgress(progressPercentage);
}
@Override
public void onFinish() {
}
};
countDownTimer.start();
我有一个圆形进度条,它是用可绘制对象制作的,其值从 0-100(含)。当我加载我的 activity 时,我想用从 0 到我想要的值的值“填充”进度条。我为此使用 CountdownTimer
。
问题是,即使我将该值设置为最大值 100(或任何其他值),进度条也不会一直填满。这是我的代码:
seekbar = (ProgressBar) findViewById(R.id.progressBar);
seekbar.setMax(100);
final int desiredvalue=100;
CountDownTimer countDownTimer =
new CountDownTimer(1500, 20) {
int startingvalue=0;
public void onTick(long millisUntilFinished) {
float progressPercentage = (desiredvalue*20)/1500;
seekbar.setProgress(startingvalue+=progressPercentage);
}
@Override
public void onFinish() {
}
};
countDownTimer.start();
}
事情是这样的:Open me!
据我了解,您希望根据您的要求设置进度值。
您可以使用 ValueAnimator
这样的东西:
progressBar = findViewById(R.id.my_pb);
ValueAnimator animation = ValueAnimator.ofFloat(0f, 100f);
animation.setDuration(1000);
animation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator updatedAnimation) {
Integer animatedValue = Math.round( (float)updatedAnimation.getAnimatedValue());
progressBar.setProgress(animatedValue);
}
});
animation.start();
的更多详细信息
我认为只需对您的代码稍作修改即可解决此问题。只需更改您的 onTick
代码,如下所示。
seekbar = (ProgressBar) findViewById(R.id.progressBar);
seekbar.setMax(100);
final int desiredvalue=100;
CountDownTimer countDownTimer = new CountDownTimer(1500, 20) {
public void onTick(long millisUntilFinished) {
float progressPercentage = (desiredvalue*(1500L-millisUntilFinished))/1500;
seekbar.setProgress(progressPercentage);
}
@Override
public void onFinish() {
}
};
countDownTimer.start();