Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.os.Handler
- import android.os.Looper
- class PendingProgressController @JvmOverloads constructor(private val progress: Progress,
- private val showDelay: Long = 300L,
- private val minShowTime: Long = 500L) : Progress {
- private var startTime: Long = -1
- private var postedHide = false
- private var postedShow = false
- private var dismissed = false
- private val delayedHide = Runnable {
- postedHide = false
- startTime = -1
- progress.hide()
- }
- private val delayedShow = Runnable {
- postedShow = false
- if (!dismissed) {
- startTime = System.currentTimeMillis()
- progress.show()
- }
- }
- override fun show() {
- startTime = -1
- dismissed = false
- MAIN_THREAD_HANDLER.removeCallbacks(delayedHide)
- postedHide = false
- if (!postedShow) {
- MAIN_THREAD_HANDLER.postDelayed(delayedShow, showDelay)
- postedShow = true
- }
- }
- override fun hide() {
- dismissed = true
- MAIN_THREAD_HANDLER.removeCallbacks(delayedShow)
- postedShow = false
- val diff = System.currentTimeMillis() - startTime
- if (diff >= minShowTime || startTime == -1L) {
- progress.hide()
- } else {
- if (!postedHide) {
- MAIN_THREAD_HANDLER.postDelayed(delayedHide, minShowTime - diff)
- postedHide = true
- }
- }
- }
- companion object {
- private val MAIN_THREAD_HANDLER = Handler(Looper.getMainLooper())
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement