循环中的计数和倒计时。 android

countup and countdown in a loop. android

例如,我想从 1 数到 15,然后从 15 数到 1 并重复该过程...您可以帮我完成吗?我尝试了一切。而不是 if,我尝试了 While,它出于某种原因给出了随机数。这种方法只减到14。它不会完全倒计时。

int counter = 0;
int total = 15;
number = (TextView) this.findViewById(R.id.number);


    final Timer c=new Timer();
    c.scheduleAtFixedRate(new TimerTask() {         
            @Override
            public void run() {

                if (counter < total && timerHasStarted ) {


                    runOnUiThread(new Runnable()

                    {
                        @Override
                        public void run()
                        {
                           number.setText("" +counter );
                            counter++;    

                        }
                    });

                }
              if (counter <= total && timerHasStarted ) {


                    runOnUiThread(new Runnable()

                    {
                        @Override
                        public void run()
                        {
                           number.setText("" +counter );
                            counter++;    

                        }
                    });
                    if (counter == total && timerHasStarted) {
                        countingDown = true;
                      if(countingDown){

                            counter--;
                        }
                        else{
                            counter++;

                        }
                        //setting the text here
                        if(counter%15==0){    //only 0 when counter equals 0 or 15
                            countingDown=!countingDown; // starting the other direction at next time
                        }



                    }

                }}}, 1000, 300);

    timerHasStarted = true;

您没有提供完整的代码,但是

你的逻辑有一个很大的 flaw:first 计数器是 0 所以第一个 if 会把它加起来,因为它小于 15......它一直这样做直到它达到 15 然后它什么都不做......但是这是第二个,如果现在计数器是 15,它被执行,使计数器再次回到 14,所以它在 14 和 15 之间改变整个时间从它第一次到达的点开始。

这是我的解决方案:

有一个像 countingDown 这样的布尔值,并在开始时将其设置为 false,如果它达到 15,则将其设置为 true。

如果 countingDown 是 true/false,检查这个布尔值要做什么。

喜欢:

if(countingDown){
    counter--;
}
else{
    counter++;
}
//setting the text here
if(counter%15==0){    //only 0 when counter equals 0 or 15
    countingDown=!countingDown; // starting the other direction at next time
}

干杯

终于。我做到了。菜鸟错误:p

final Timer c=new Timer();
    c.scheduleAtFixedRate(new TimerTask() {         
            @Override
            public void run() {

                if (counter <= total && timerHasStarted ) {


                    runOnUiThread(new Runnable()

                    {
                        @Override
                        public void run()
                        {
                           number.setText("" +counter );
                              // removed counter++;

                        }
                    });
                    if (counter == total && timerHasStarted) {

                         runOnUiThread(new Runnable()

                        {
                            @Override
                            public void run()
                            {
                               number.setText("" +counter);
                                       // removed counter--;

                            }

                        });



                        }
                      if(countingDown){
                          countingDown = true;
                            counter--;
                        }
                        else{
                            counter++;
                            countingDown = false;
                        }
                        //setting the text here
                        if(counter%15==0){    //only 0 when counter equals 0 or 15
                            countingDown=!countingDown; // starting the other direction at next time
                        }



                    }

                }}, 1000, 300);