2017-06-15 55 views
6

如果有任何支持库功能可以通过API低于24使天文台支持天文台的功能setCountDownAndroid中的天文台支持库

+0

如何API 24到项目的复制粘贴来源和使用'Chronometer'呢? – azizbekian

+0

你能详细说明一下吗? –

+0

如何复制粘贴[此](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/widget/Chronometer.java)类到您的包和使用'com.your.package.Chronometer'类而不是'android.widget.Chronometer'。 – azizbekian

回答

0

根据Android文档,其不可能与低于API级别24. Chronometer小部件只使用计数。如果需要,请使用CountDownTimer

例如:

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(); 

编辑:

如果你想要去GitHub的解决方案,然后看看thisthis

0

您可以尝试RXJava简单的手柄螺纹,定时器和许多其他功能。

定时器操作的文档这样说:

创建一个可观察一个给定的延迟

因此,你所观察的行为之后发出特定产品expected-定时器()发射只是一个延迟后的单个项目。

另一方面,间隔运算符将发出间隔给定间隔的项目。

例如,这可观察将发出一个项目每秒:

Observable.interval(1,TimeUnit.SECONDS);

而一个完整的例子:

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 
      });