2017-06-15 2 views
6

Wenn es irgendeine Unterstützung Bibliotheksfunktion, die die setCountDown Funktion der Chronometer-Unterstützung durch APIs niedriger als 24 machen könnte?Support-Bibliothek für Chronometer in Android

+0

Wie wäre es copy-Einfügen Quellen API 24 in Ihr Projekt und die Verwendung dieser 'statt Chronometer'? – azizbekian

+0

können Sie das ausarbeiten? –

+0

Was ist mit Kopieren [http://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/widget/Chronometer.java] Klasse in Ihr Paket und Verwenden Sie 'com.your.package.Chronometer' Klasse anstelle von' android.widget.Chronometer'. – azizbekian

Antwort

0

Laut Android-Dokumentation, ist es nicht möglich mit unten API-Ebene 24. Chronometer Widget nur Verwendung zählen. Wenn Sie dies tun müssen, gehen Sie mit CountDownTimer.

Beispiel:

final int oneSecond = 1000; // in milliSeconds i.e. 1 second 
final int tenSeconds = 100000; // 100 seconds 
CountDownTimer cTimer = new CountDownTimer(100000, oneSecond) { 

    public void onTick(long millisUntilFinished) { 

      int totalTime = 60000; // in milliseconds i.e. 60 seconds 
      String v = String.format("%02d", millisUntilFinished/totalTime); 
      int va = (int)((millisUntilFinished%totalTime)/oneSecond); 
      textView.setText("remaining seconds: " +v+":"+String.format("%02d",va)); 
    } 

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

EDIT:

Wenn Sie mit GitHub Lösung gehen wollen haben dann einen Blick auf this und this

0

können Sie versuchen, RXJava einfachen Griff Gewinde , Timer und viele andere Funktionen.

Die Dokumentation für den Timer Operator sagt dies:

eine beobachtbare erstellen, die Sie beobachten nach einer bestimmten Verzögerung

So das Verhalten Expected Timer() aussendet ein bestimmtes Element emittiert, nur ein einzelner Artikel nach einer Verzögerung.

Der Intervalloperator hingegen sendet Objekte mit einem bestimmten Abstand.

Zum Beispiel wird diese Observable ein Element emittiert jede Sekunde:

Observable.interval (1, TimeUnit.SECONDS);

Und ein komplettes Beispiel:

Observable.interval(1,TimeUnit.SECONDS, Schedulers.io()) 
     .take(300) // take 300 second 
     .map(v -> 300 - v) 
     .subscribe(
      onNext -> { 
       //on every second pass trigger 
      }, 
      onError -> { 
       //do on error 
      }, 
      () -> { 
       //do on complete 
      }, 
      onSubscribe -> { 
       //do once on subscription 
      }); 
Verwandte Themen