我想知道如何使水平进度条取决于秒。例如,我必须向进度条写入什么代码,从 0% 在 0 秒开始,在 60 秒后达到 100%?
恢复我想制作一个仅取决于秒数的水平进度条。
我想知道如何使水平进度条取决于秒。例如,我必须向进度条写入什么代码,从 0% 在 0 秒开始,在 60 秒后达到 100%?
恢复我想制作一个仅取决于秒数的水平进度条。
bar = (ProgressBar) findViewById(R.id.progress);
bar.setProgress(total);
int oneMin= 1 * 60 * 1000; // 1 minute in milli seconds
/** CountDownTimer starts with 1 minutes and every onTick is 1 second */
cdt = new CountDownTimer(oneMin, 1000) {
public void onTick(long millisUntilFinished) {
total = (int) ((timePassed/ 60) * 100);
bar.setProgress(total);
}
public void onFinish() {
// DO something when 1 minute is up
}
}.start();
我已经编辑了代码。现在看看。那么这是如何工作的。首先,您在进度条上设置一个总数,在您的情况下为 60。然后您需要计算自开始以来经过的时间百分比,以及使用 timePassed/60*100 获得的百分比并将其转换为 int。因此,在每个刻度上,您都会将进度增加总大小的 1/100。希望这能让它更清楚。
This answer is modified from above answer.
progressBar = (ProgressBar) findViewById(R.id.progressbar);
// timer for seekbar
final int oneMin = 1 * 60 * 1000; // 1 minute in milli seconds
/** CountDownTimer starts with 1 minutes and every onTick is 1 second */
new CountDownTimer(oneMin, 1000) {
public void onTick(long millisUntilFinished) {
//forward progress
long finishedSeconds = oneMin - millisUntilFinished;
int total = (int) (((float)finishedSeconds / (float)oneMin) * 100.0);
progressBar.setProgress(total);
// //backward progress
// int total = (int) (((float) millisUntilFinished / (float) oneMin) * 100.0);
// progressBar.setProgress(total);
}
public void onFinish() {
// DO something when 1 minute is up
}
}.start();
我假设你有一些代码已经数到 60。基于此:
int time; // 0-60 seconds
ProgressBar bar = (ProgressBar) findViewById(R.id.progressBar);
bar.setProgress((time / 60.0) * 100);