Improve timer for Session

dev
Aurelien Hubert 7 years ago
parent 51bf2481a9
commit 6b057b70a4
  1. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt
  2. 14
      app/src/main/java/net/pokeranalytics/android/util/extensions/DateExtension.kt

@ -27,6 +27,7 @@ import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableDiffCallback import net.pokeranalytics.android.ui.view.RowRepresentableDiffCallback
import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager
import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow
import net.pokeranalytics.android.util.extensions.getNextMinuteInMilliseconds
import java.util.* import java.util.*
@ -47,7 +48,6 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate {
private val refreshTimer: Runnable = object : Runnable { private val refreshTimer: Runnable = object : Runnable {
override fun run() { override fun run() {
// Refresh header each 30 seconds
refreshTimer() refreshTimer()
handler.postDelayed(this, TIMER_DELAY) handler.postDelayed(this, TIMER_DELAY)
} }
@ -194,7 +194,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate {
floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f)
.setDuration(animationDuration) .setDuration(animationDuration)
.setInterpolator(OvershootInterpolator()).start() .setInterpolator(OvershootInterpolator()).start()
handler.postDelayed(refreshTimer, TIMER_DELAY) handler.postDelayed(refreshTimer, Date().getNextMinuteInMilliseconds())
} }
SessionState.STARTED -> { SessionState.STARTED -> {
sessionMenu?.findItem(R.id.restart)?.isVisible = true sessionMenu?.findItem(R.id.restart)?.isVisible = true
@ -203,7 +203,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate {
floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f)
.setDuration(animationDuration) .setDuration(animationDuration)
.setInterpolator(OvershootInterpolator()).start() .setInterpolator(OvershootInterpolator()).start()
handler.postDelayed(refreshTimer, TIMER_DELAY) handler.postDelayed(refreshTimer, Date().getNextMinuteInMilliseconds())
} }
SessionState.PAUSED -> { SessionState.PAUSED -> {
sessionMenu?.findItem(R.id.restart)?.isVisible = true sessionMenu?.findItem(R.id.restart)?.isVisible = true

@ -141,3 +141,17 @@ fun Date.startOfYear() : Date {
calendar.set(Calendar.MONTH, 0) calendar.set(Calendar.MONTH, 0)
return calendar.time return calendar.time
} }
// Return the number of seconds until the next minute
fun Date.getNextMinuteInseconds() : Int {
return (getNextMinuteInMilliseconds() / 1000).toInt()
}
// Return the number of milliseconds until the next minute
fun Date.getNextMinuteInMilliseconds() : Long {
val calendar = Calendar.getInstance()
calendar.add(Calendar.MINUTE, 1)
calendar.set(Calendar.SECOND, 0)
calendar.set(Calendar.MILLISECOND, 0)
return calendar.time.time - this.time
}
Loading…
Cancel
Save