Dans mon application, je veux montrer une montre d'arrêt de la minuterie. Lorsque j'ai cherché à Google, j'ai trouvé une option appelée chronomètre sur le site des développeurs. Il ressemble juste à une montre d'arrêt de la minuterie.
Lorsque je clique sur le bouton de démarrage, je veux que la minuterie commence à démarrer et que je clique sur le bouton PAUSE, la minuterie doit être suspendue lorsque je clique une fois que je devais commencer le début de l'heure été arrêté. P>
Mais dans ce chronomètre, il est démarré à partir de 0 et quand je clique sur Pause à 1min 10 secondes, il est en pause. Lorsque je clique encore une fois, commencez après 5min, la minuterie démarre le compte à partir de 6min 10sec, même à la pause, la minuterie est en cours d'exécution, comment arrêter cela et être repris à l'heure à laquelle il est arrêté. P>
suivi est Mon code pour chronomètre p>
4 Réponses :
du chronomètre doc p>
arrêter de compter. Cela n'affecte pas la base étant définie de SetBase (Long), juste l'affichage de la vue. p> blockQuote>
Je n'ai aucun environnement de développement Android en ce moment, je ne peux donc pas en enquêter plus: ( p>
éditer: em> est-ce le code a > Vous avez basé votre code sur? Il semble utiliser
setebase code> à l'heure actuelle sur l'arrêt p>
Désolé, mais j'ai trouvé une solution moi-même et il semble beaucoup plus simple: p>
Dans votre activité, déclarez une variable de membre (E.g. Lastpause) pour enregistrer l'heure de votre dernière pause: P>
Démarrez votre minuterie (supposez que la variable de votre minuterie est Crono): P>
Pause Votre minuterie à chaque fois en utilisant: p>
reprend votre minuterie à chaque fois en utilisant: p>
Je n'ai pas testé la précision précisément pour le moment, car il semble que mes yeux:] p> privé LONGPAUSÉE; CODE> P> LI>
crono.setbase (systemclock.elapsédrealtime ()); code> p>
crono.start (); code> p> li>
lastpause = systemclock.elapsédrealtime (); code> p>
crono.stop (); code> p> li>
crono.setbase (crono.getbase () + systemclock.elapsédrealtime () - lastpause); code> p>
crono.start (); code> p> li>
ol>
Les travaux suivants WONDERS:
final long lastPause = SystemClock.elapsedRealtime(); mChronometer.stop(); final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity) .setCancelable(false) .setMessage("Stop chronometer while AlertDialog is asking something.") .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); mChronometer.setBase(mChronometer.getBase() + SystemClock.elapsedRealtime() - lastPause); mChronometer.start(); } }); alertDialogBuilder.create().show();
J'ai fait face au même problème et je l'ai réparé à l'aide du code suivant:
chronometerInstance.setBase(SystemClock.elapsedRealtime()); chronometerInstance.stop();