Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中,如何使水平进度条依赖于秒数?_Android_Progress Bar_Seconds - Fatal编程技术网

在Android中,如何使水平进度条依赖于秒数?

在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

我想知道如何使水平进度条依赖于秒数。例如,我必须向进度条中写入什么代码,从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。
希望这能让事情变得更清楚。

我假设您已经有了一些计数到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?