2015-06-28 59 views
0

我想從1到15例如從15開始直到它達到1並重復這個過程......請你幫我完成一下嗎?我嘗試了一切。而不是如果,我嘗試了,而由於某種原因,它給了隨機數字。此方法僅減去14.它不會完全倒計時。循環中的countup和倒計時。 android

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; 

回答

1

你沒有提供完整的代碼但仍然

你的邏輯有一個很大的缺陷:第一計數器爲0,因此,如果是要去,因爲它在15 ...它這樣做,直到算它的第一它達到了15,那麼它什麼都沒有......但是如果現在這個計數器是15,它會被執行使得計數器再次返回到14,所以它在14和15之間改變,這個時間就會變成第一個點時間。

繼承人我的解決方案:

有像countingDown一個布爾值,並在一開始如果它擊中了15集它真正將其設置爲false。

檢查此布爾值如果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 
} 

乾杯

+0

請您澄清更多?我是否保持第一次計數代碼?那麼,總共是15,但是計數器從未達到15,達到了14。我將計數器更改爲1.如果我不瞭解你,請原諒我,我是新手。我嘗試過你的榜樣,但它似乎從來沒有數過。我希望你知道我想要什麼。我希望計數器達到總數,然後減少到1,這是原始的int,然後計數回到15並保持重複。 –

+0

是的,把這段代碼放在你的計時器方法裏面,它可以工作在0和15之間。 –

+0

好吧,我做了你告訴我的事情,它一直停留在總計15秒,它不會倒計時。感謝您的支持。 :p有些不對。請再次幫助將非常感激。 –

0

最後。我做的。 Noob錯誤: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);