Android: Wie anhalten und fortsetzen eines Count-Down-Timer?
Entwickelt ich eine Count-Down-Timer, und ich bin nicht sicher, wie das anhalten und fortsetzen des Timers als die textview für den timer geklickt wird. Klicken Sie auf start, dann klicken Sie erneut, um anzuhalten und fortzusetzen, klicken Sie erneut die timer-text-Ansicht.
Dies ist mein code:
Timer = (TextView) this.findViewById(R.id.time); //TIMER
Timer.setOnClickListener(TimerClickListener);
counter = new MyCount(600000, 1000);
}//end of create
private OnClickListener TimerClickListener = new OnClickListener() {
public void onClick(View v) {
updateTimeTask();
}
private void updateTimeTask() {
if (decision == 0) {
counter.start();
decision = 1;
} else if (decision == 2) {
counter.onResume1();
decision = 1;
} else {
counter.onPause1();
decision = 2;
}//end if
}
;
};
class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}//MyCount
public void onResume1() {
onResume();
}
public void onPause1() {
onPause();
}
public void onFinish() {
Timer.setText("00:00");
p1++;
if (p1 <= 4) {
TextView PScore = (TextView) findViewById(R.id.pscore);
PScore.setText(p1 + "");
}//end if
}//finish
public void onTick(long millisUntilFinished) {
Integer milisec = new Integer(new Double(millisUntilFinished).intValue());
Integer cd_secs = milisec / 1000;
Integer minutes = (cd_secs % 3600) / 60;
Integer seconds = (cd_secs % 3600) % 60;
Timer.setText(String.format("%02d", minutes) + ":"
+ String.format("%02d", seconds));
///long timeLeft = millisUntilFinished /1000;
/}//on tick
}//class MyCount
protected void onResume() {
super.onResume();
//handler.removeCallbacks(updateTimeTask);
//handler.postDelayed(updateTimeTask, 1000);
}//onResume
@Override
protected void onPause() {
super.onPause();
//do stuff
}//onPause
InformationsquelleAutor der Frage Mineko | 2011-11-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Quelle : In Diesem Gist.
InformationsquelleAutor der Antwort hexin
Einen schönen und einfachen Weg, um eine Pause - /Fortsetzen-für Ihren Countdown-Timers ist, erstellen Sie eine separate Methode für den timer startpause und fortsetzen wie folgt:
Dem timerStart hat eine lange parameter, wie er wiederverwendet wird, indem Sie die resume() Methode unten. Denken Sie daran zu speichern milliTillFinished (oben als milliLeft), so dass Sie senden können Sie durch in Ihre resume() Methode. Pausieren und fortsetzen der folgenden Methoden jeweils:
Hier ist der code für die button zur info:
InformationsquelleAutor der Antwort Josh
Naja es gibt keine API um zu pausieren oder wieder fortsetzen. Was Sie tun sollten, ist
cancel()
des Timers und speichern der verbleibenden Zeit in eine variable. Wenn Sie die resume-Taste wieder geschlagen, starten Sie den timer mit dem Wert aus der Variablen.Wissen Sie Chronometer kann für Sie von Interesse sein.
InformationsquelleAutor der Antwort Reno
Können Sie versuchen, mit einer Bibliothek, die ich angelegt, Hourglass
Verwenden
hourglass.startTimer();
um den timer zu starten.Es wurde helper-Methoden, die es erlauben das anhalten und fortsetzen des Timers.
UND
InformationsquelleAutor der Antwort Ankush
InformationsquelleAutor der Antwort Sanket Patankar
Habe ich eine einfache Lösung. Alles, was Sie tun müssen ist, fügen Sie eine zusätzliche variable, die speichert die aktuelle Zeit. Die einzige Ergänzung ist currentMillis oben und in der onTick(). Verwenden Sie Abbrechen (), um zu pausieren.
PS: ich bin mit butterknife-Bibliothek, die verwendet wird, um zu vermeiden, mit findviewbyid und setonclicklisteners. Wenn Sie nicht es verwenden möchten, dann können Sie einfach die grundlegende Art und Weise der Einstellung der Hörer-und findviewbyid.
}
InformationsquelleAutor der Antwort rahulxyz