Котлин - Простой таймер обратного отсчета - PullRequest
0 голосов
/ 08 января 2019

Я знаю, как создать простой 20-секундный таймер обратного отсчета в Java. Но я бы хотел создать этот в Котлине.

package android.os;

new CountDownTimer(20000, 1000) {
    public void onTick(long millisUntilFinished) {
        mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
    }
    public void onFinish() {
        mTextField.setText("Time's finished!");
    }
}.start();

Как мне это сделать с помощью Kotlin?

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Вы можете использовать объекты Kotlin:

val timer = object: CountDownTimer(20000, 1000) {
    override fun onTick(millisUntilFinished: Long) {...}

    override fun onFinish() {...}
}
timer.start()
0 голосов
/ 26 марта 2019

Хронометр можно настроить на обратный отсчет, и мне кажется, что это самый простой способ.

Добавьте представление Хронометр в свой макет xml, пример

<Chronometer  
 android:id="@+id/view_timer"   
 tools:targetApi="24"  
 android:layout_width="wrap_content"  
 android:layout_height="wrap_content"/>

Тогда в вашей деятельности или фрагменте:

   view_timer.isCountDown = true
   view_timer.base = SystemClock.elapsedRealtime() + 20000
   view_timer.start()
0 голосов
/ 08 января 2019

Попробуйте использовать объекты, как это:

var countDownTimer = object : CountDownTimer(2000, 1000) {
    // override object functions here, do it quicker by setting cursor on object, then type alt + enter ; implement members
}

Попробуйте этот сайт: https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Java%20to%20Kotlin%20conversion/Task.kt

У вас есть маленькая кнопка "Преобразовать из Java" в правом верхнем углу, которая может быть полезна для вас.

EDIT:

Не забудьте запустить этот объект, когда вам это нужно, добавив .start() в конце объявления или где-нибудь в вашей деятельности / фрагменте:

countDownTimer.start()
...