2017-05-07 4 views
0

Ich möchte Countdown-Timer erstellen, die von 5 Sekunden beginnen und durch Drücken einer Taste die aktuelle Zeit um 3 Sekunden erhöhen. Ich habe einen Handler verwendet, um den Countdown-Timer zu verarbeiten. Ich weiß, dass wir CountdownTimer nicht verwenden können. Hier ist mein Code:hinzufügen 3 Sekunden zu Handler

Handler handler = new Handler(); 
int delay = 1000; 
r = new Runnable() { 
        @Override 
        public void run() { 

         int timeOut = finalTime - 1; 
         String printedTime = Integer.toString(timeOut); 
         timer.setText(printedTime); 
         handler.postDelayed(this,delay); 
       }; 

I aktualisiert, ist hier der richtige Code auf einfache Art und Weise:

timer = (TextView) findViewById(R.id.timer); 
    addSecs = (Button) findViewById(R.id.addSecs); 

    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      currentTime = timer.getText().toString(); 
      time = Integer.parseInt(currentTime); 
      time-=1; 
      updateTime = Integer.toString(time); 
      timer.setText(updateTime); 
      handler.postDelayed(this,1000); 
     } 
    },1000); 

    addSecs.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      currentTime = timer.getText().toString(); 
      time = Integer.parseInt(currentTime); 
      time+=3; 
      updateTime = Integer.toString(time); 
      timer.setText(updateTime); 
     } 
    }); 
+0

verwenden möchten, ich gehe davon aus 'timeOut' und' finalTime' sind in Sekunden? Erhöhen Sie einfach die 'finalTime + = 3' auf Ihrem Button' onClick (View v) 'Event – Carpetfizz

+0

@Carpetfizz Ja, sie sind in Sekunden und brilliant. Das habe ich bei onClick vermisst. Danke Alooooot ... – rexo

Antwort

0

Verwenden Sie den folgenden Code nach Ihrer Logik Timer

Verwendung CountDownTimer ändern

1. Param ist der Start-Timer in Millisekunden,
2. Params ist zählen Intervall nach unten

new CountDownTimer(5000, 1000) { 
    @Override 
    public void onTick(long millisUntilFinished) { 
     //5 ,4 , 3, 2, 1 
     Log.d(TAG,"starting nuclear in " + (millisUntilFinished/1000)); 
    } 
    @Override 
    public void onFinish() { 
     //finish code 
    } 

}.start(); 

Wenn Sie

Handler
timeOut = 5; 
private Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     /* do what you need to do */ 
     Log.d(TAG,"starting nuclear in " + timeOut--); 
     /* and here comes the "trick" */ 
     if(timeOut > 0) 
      handler.postDelayed(this, 1000); 
    } 
}; 

private Handler handler = new Handler(); 
handler.postDelayed(runnable, 1000); 
Verwandte Themen