在Android中,如何使水平进度条依赖于秒数?
我想知道如何使水平进度条依赖于秒数。例如,我必须向进度条中写入什么代码,从0%开始到0秒,然后在60秒后达到100% 我想制作一个水平进度条,它只取决于秒数,其他什么都不依赖在Android中,如何使水平进度条依赖于秒数?,android,progress-bar,seconds,Android,Progress Bar,Seconds,我想知道如何使水平进度条依赖于秒数。例如,我必须向进度条中写入什么代码,从0%开始到0秒,然后在60秒后达到100% 我想制作一个水平进度条,它只取决于秒数,其他什么都不依赖 bar = (ProgressBar) findViewById(R.id.progress); bar.setProgress(total); int oneMin= 1 * 60 * 1000; // 1 minute in milli seconds /** CountDownTimer s
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。
希望这能让事情变得更清楚。我假设您已经有了一些计数到60的代码。基于此:
int time; // 0-60 seconds
ProgressBar bar = (ProgressBar) findViewById(R.id.progressBar);
bar.setProgress((time / 60.0) * 100);
此答案由上述答案修改而来
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();
什么是变量timePassed?