Как остановить хронометр от двойного отсчета нуля (-0 и +0) - PullRequest
2 голосов
/ 05 октября 2019

Я делаю приложение для измерения времени гонки в Android Studio в kotlin, которое вычисляет кучу полезной информации по времени разделения. В начале гонки нагрудник 1 начинается с 0, но нагрудник 2 может начаться через 15 секунд. Я хочу, чтобы пользователь видел каждого гонщика в RecyclerView с хронометром (начиная, например, с -15) до старта гонщика (0) и продолжал считать по ходу гонки. Что я заметил, так это то, что виджет Хронометр дважды считает ноль, когда он начинается с отрицательных чисел и переходит в положительные числа. Есть ли способ сделать так, чтобы счетчик отсчитывал только один раз?

Ниже приведен код для установки хронометра внутри каждого просмотра карты на время до их запуска, а затем для их запуска.

p0.athleteChrono.base = (SystemClock.elapsedRealtime() + racer.startTime *1000)
p0.athleteChrono.start()

Опять же, он устанавливает себя правильно, например, -00: 10, начинает отсчет, но определенно отображает -00: 01, 00:00, 00:00, 00:01, прежде чем продолжить

Вотпример основного действия, в котором хронометр установлен на -3

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    btnStart.setOnClickListener {
        chronometer.base = SystemClock.elapsedRealtime() + 3000
        chronometer.start()
    }
}

}

и пример файла макета Activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toTopOf="@+id/chronometer"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:text="Chronometer"></TextView>

    <Chronometer
        android:id="@+id/chronometer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:padding="10dp"></Chronometer>
    <Button
        android:id="@+id/btnStart"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/chronometer"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:background="@color/colorPrimary"
        android:text="Start"></Button>

</androidx.constraintlayout.widget.ConstraintLayout>
...