2016-10-18 2 views
0

Ich arbeite an einer Android-App wie Countdown. An dieser Stelle mache ich einige grundlegende Funktionalitäten.android- get dd: hh: mm: ss von Millisec (nicht wie TT/MM/JJJJ) (sollte wie ein Countdown sein)

im obigen Code habe ich gerade versucht, Millisekunden als Parameter zu übergeben und dann die verbleibenden Sekunden auf Timer Textview zu drucken. nach jeder Sekunde.

so funktioniert es gut. seine aktualisierende Textansicht. wie nehme ich bestanden 5000 als Parameter dann ausgegeben: 3000 und so stoppt on..and nach

bei 1000 erreicht, aber jetzt das Problem ist, ich jene Millisekunden Tage umwandeln möchten: hr: min: sec und dann sollte es drucken. so habe ich versucht, als

Runnable updater; 
int b = 0; 
void updateTime(final int timeString) { 
    b = timeString; 
    timer = (TextView) findViewById(R.id.timerText); 
    final Handler timerHandler = new Handler(); 

    updater = new Runnable() { 
     @Override 
     public void run() { 
      if (b >= 1000) { 
       int Final=b; 
       int day,hr,min,sec; 
       day = Final/(60 * 60 * 24); 
       Final -= day * (60 * 60 * 24); 
       hr = Final/(60 * 60); 
       Final -= hr * (60 * 60); 
       min = Final/60; 
       sec = Final - min * 60; 
       timer.setText(day + " Days " + hr + " Hours " + min + " minutes " + sec + " Sec"); 

       //decrease 1 sec 
       b = b - 1000; 
       timerHandler.postDelayed(updater, 1000); 
      } else { 
       timerHandler.removeCallbacks(updater); 
      } 
     } 
    }; 
    timerHandler.post(updater); 
} 

aber es ist nicht richtig outpout geben. Ich habe bereits diese Umwandlungstechnik vor ... aber es funktioniert nicht in obigen Fall verwendet ... plz mir jemand sagen, wo ich mistake.please machen bin

Bitte beachten Sie: nein ich möchte nicht konvertieren Millisekunde in TT/MM/JJJJ-Format. Lassen Sie mich sagen, ich habe 5000 Millisekunden i.s 5 sec. Daher sollte der Bearbeitungsblock zuerst 00 Tage 00 Stunden 00 Minuten 5 Sekunden anzeigen. dann nach jeder Sekunde sollte es 1000 von 5000 dh 4000 verringern, so wird es angezeigt ......... 04 sec und so weiter .. bis ...... 00 sec ... (genau wie Countdown)

+0

Mögliches Duplikat von [Wie Millisekunden zu konvertieren "X min, x Sekunden" in Java?] (Http://stackoverflow.com/questions/625433/how-to-convert-milliseconds-to-x -mins-x-sekunden-in-java) – klauskpm

+0

ohh kann es mir helfen. Ich werde es versuchen – varsha

+0

definieren "aber es funktioniert nicht" – njzk2

Antwort

0

Werfen Sie einen Blick auf die CountDownTimer class und this answer auf StackOverflow.

private static final String FORMAT = "%02d:%02d:%02d"; 

new CountDownTimer(userSelectedTimeInMillis, 1000) { 

    public void onTick(long millisUntilFinished) { 

     textView.setText(""+String.format(FORMAT, 
       TimeUnit.MILLISECONDS.toHours(millisUntilFinished), TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(
       TimeUnit.MILLISECONDS.toHours(millisUntilFinished)), TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(
        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));    
    } 

    public void onFinish() { 
     textView.setText("done!"); 
    } 
}.start(); 
+1

Danke @Srikar Reddy, der obige Link funktionierte für mich. Im Grunde war mein Fehler, die Umwandlungstechnik, die ich verwendete, war die Technik von Sekunden bis Tagen: hr: min: sec ... und meine Gesamtzeit war in Millisekunden ... Vielen Dank – varsha

Verwandte Themen