Skip to content

Instantly share code, notes, and snippets.

@st235
Created March 12, 2023 13:19
Show Gist options
  • Save st235/adb683c85789016516571dd2a36b1c3c to your computer and use it in GitHub Desktop.
Save st235/adb683c85789016516571dd2a36b1c3c to your computer and use it in GitHub Desktop.
[HSE] [My first Android application] Step 3: implement logic
package your_package_name
import android.os.Bundle
import android.os.CountDownTimer
import android.util.Log
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatImageView
import com.github.st235.circularprogressbar.CircularProgressBar
import java.util.concurrent.TimeUnit
class MainActivity : AppCompatActivity() {
private lateinit var timerProgressBar: CircularProgressBar
private lateinit var timerCounterView: TextView
private lateinit var playButton: AppCompatImageView
private lateinit var timer: CountDownTimer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
timerProgressBar = findViewById(R.id.timer_progress)
timerCounterView = findViewById(R.id.timer_text)
playButton = findViewById(R.id.play_button)
timerCounterView.text = timeToString(TimeUnit.MINUTES.toMillis(25))
timer = object : CountDownTimer(TimeUnit.MINUTES.toMillis(25),
1000L) {
override fun onTick(millisUntilFinished: Long) {
timerCounterView.text = timeToString(millisUntilFinished)
val progress = millisUntilFinished.toFloat() / TimeUnit.MINUTES.toMillis(25)
if (progress < 0 || progress > 1) {
Log.d("MainActivity", "Progress is outside of [0, 1]")
} else {
timerProgressBar.progress = progress
}
}
override fun onFinish() {
}
}
playButton.setOnClickListener {
timer.start()
playButton.setImageResource(R.drawable.ic_stop)
}
}
private fun timeToString(millis: Long): String {
val minutes = TimeUnit.MILLISECONDS.toSeconds(millis) / 60
val seconds = TimeUnit.MILLISECONDS.toSeconds(millis) % 60
return String.format("%02d:%02d", minutes, seconds)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment