【问题标题】:Support Library for Chronometer in AndroidAndroid 中 Chronometer 的支持库
【发布时间】:2017-06-15 23:45:18
【问题描述】:

是否有任何支持库函数可以使 API 支持的 setCountDown 函数低于 24?

【问题讨论】:

  • 将 API 24 的源代码复制粘贴到您的项目中并改用 Chronometer 怎么样?
  • 你能详细说明一下吗?
  • 如何将this 类复制粘贴到您的包中并使用com.your.package.Chronometer 类而不是android.widget.Chronometer
  • 试过但没用
  • tried but didn't work 究竟是什么不起作用?

标签: android android-support-library chronometer


【解决方案1】:

您可以尝试RXJava 来简单地处理线程、计时器和许多其他功能。

计时器操作员的文档是这样说的:

创建一个在给定延迟后发出特定项目的 Observable

因此,您观察到的行为是预期的 - timer() 在延迟后只发出一个项目。

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

例如,这个 Observable 将每秒发出一个项目:

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

【讨论】:

    【解决方案2】:

    根据 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      • 2015-10-04
      相关资源
      最近更新 更多