Skip to content

arsvechkarev/TimerX

Repository files navigation

TimerX

A simple timer & stowatch library for android which allows for building customizable timer or stopwatch, applying custom formats, scheduling actions and more.

TimerX provides a simple api to apply a different format to a timer or a stopwatch. For instance, you can create a stopwatch, specify format as HH:MM:SS or SS.LL and time in the stopwatch will be formatted accordingly.

See wiki for more detailed explanation.

Gradle Setup

Make sure you have jitpack added in your top-level build.gradle file:

allprojects {
  repositories {
    google()
    maven { url 'https://jitpack.io' }
  }
}

And then, add following lines in your module-level build.gradle file:

dependencies {
    implementation 'com.github.arsvechkarev:TimerX:3.1.0'
}

Examples:

Stopwatch:

val stopwatch = buildStopwatch { 
    // Setting the start format of the stopwatch
    startFormat("SS:LL")
    // Setting a tick listener that gets notified when time changes
    onTick { millis: Long, time: CharSequence -> myTextView.text = time }
    // Running an action at a certain time
    actionWhen(10, TimeUnit.SECONDS) { showToast("10s passed") }
    // When the time is equal to one minute, change format to "MM:SS:LL"
    changeFormatWhen(1, TimeUnit.MINUTES, "MM:SS:LL")
}

// Starting the stopwatch
stopwatch.start();
...

Timer:

val timer = buildTimer {
    // Setting the start format of timer
    startFormat("MM:SS")
    // Setting the start time of the timer
    startTime(60, TimeUnit.SECONDS)
    // Setting a tick listener that gets notified when time changes
    onTick { millis: Long, time: CharSequence -> myTextView.text = time }
    // Run actions at a certain time
    actionWhen(40, TimeUnit.SECONDS) { showToast("40 seconds left") }
    actionWhen(20, TimeUnit.SECONDS) { showToast("20 seconds left") }
    // When the time is equal to ten seconds, change format to "SS:LL"
    changeFormatWhen(10, TimeUnit.SECONDS, "SS:LL")
}
    
// Starting the timer
timer.start();
...