如何在Android中根据秒数制作水平进度条?

7

我想知道如何制作一个水平进度条,以秒为依据。例如,我需要编写什么代码才能使进度条在0秒时从0%开始,并在60秒后达到100%?

总之,我想制作一个仅基于秒数的水平进度条。

3个回答

11
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。因此,每次滴答,您都会将进度增加总大小的1/100。


7
变量timePassed是什么? - Sundeep

6

这个答案是从上面的答案修改而来的。

    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();

1

我假设你已经有一些正在计数到60的代码。基于此:

int time; // 0-60 seconds
ProgressBar bar = (ProgressBar) findViewById(R.id.progressBar);
bar.setProgress((time / 60.0) * 100);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接