2017-06-15 26 views
6

Nếu có bất kỳ chức năng Thư viện hỗ trợ nào có thể làm cho chức năng setCountDown của bộ đếm thời gian hỗ trợ bằng API thấp hơn 24?Thư viện hỗ trợ cho Chronometer trong Android

+0

Làm thế nào về nguồn sao chép dán của API 24 vào dự án của bạn và sử dụng rằng 'Chronometer' để thay thế? – azizbekian

+0

bạn có thể xây dựng? –

+0

Điều gì về việc sao chép [this] (https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/widget/Chronometer.java) lớp vào gói của bạn và sử dụng lớp 'com.your.package.Chronometer' thay vì' android.widget.Chronometer'. – azizbekian

Trả lời

0

Theo tài liệu Android, không thể thực hiện được với mức API bên dưới 24. Chronometer chỉ sử dụng tiện ích đếm ngược. Nếu bạn cần làm như vậy, hãy truy cập CountDownTimer.

Ví dụ:

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:

Nếu bạn muốn đi với GitHub Giải pháp thì có một cái nhìn tại thisthis

0

Bạn có thể thử RXJava để đề xử lý đơn giản , bộ hẹn giờ và nhiều chức năng khác.

Các tài liệu cho các nhà điều hành hẹn giờ nói điều này:

Tạo một Quan sát mà phát ra một mục cụ thể sau khi một sự chậm trễ đưa

Như vậy hành vi mà bạn đang quan sát là timer expected-() phát ra chỉ một mục duy nhất sau một sự chậm trễ.

Toán tử khoảng thời gian, mặt khác, sẽ phát ra các mục được đặt cách nhau với một khoảng thời gian nhất định.

Ví dụ, Quan sát này sẽ phát ra một mục mỗi giây:

Observable.interval (1, TimeUnit.SECONDS);

Và một ví dụ hoàn chỉnh:

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 
      }); 
Các vấn đề liên quan