Я делаю приложение для измерения времени гонки в 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>