Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.69 KB | None | 0 0
  1. import android.os.Handler
  2. import android.os.Looper
  3.  
  4. class PendingProgressController @JvmOverloads constructor(private val progress: Progress,
  5.                                                           private val showDelay: Long = 300L,
  6.                                                           private val minShowTime: Long = 500L) : Progress {
  7.  
  8.     private var startTime: Long = -1
  9.     private var postedHide = false
  10.     private var postedShow = false
  11.     private var dismissed = false
  12.  
  13.     private val delayedHide = Runnable {
  14.         postedHide = false
  15.         startTime = -1
  16.         progress.hide()
  17.     }
  18.  
  19.     private val delayedShow = Runnable {
  20.         postedShow = false
  21.         if (!dismissed) {
  22.             startTime = System.currentTimeMillis()
  23.             progress.show()
  24.         }
  25.     }
  26.  
  27.     override fun show() {
  28.         startTime = -1
  29.         dismissed = false
  30.         MAIN_THREAD_HANDLER.removeCallbacks(delayedHide)
  31.         postedHide = false
  32.         if (!postedShow) {
  33.             MAIN_THREAD_HANDLER.postDelayed(delayedShow, showDelay)
  34.             postedShow = true
  35.         }
  36.     }
  37.  
  38.     override fun hide() {
  39.         dismissed = true
  40.         MAIN_THREAD_HANDLER.removeCallbacks(delayedShow)
  41.         postedShow = false
  42.         val diff = System.currentTimeMillis() - startTime
  43.         if (diff >= minShowTime || startTime == -1L) {
  44.             progress.hide()
  45.         } else {
  46.             if (!postedHide) {
  47.                 MAIN_THREAD_HANDLER.postDelayed(delayedHide, minShowTime - diff)
  48.                 postedHide = true
  49.             }
  50.         }
  51.     }
  52.  
  53.     companion object {
  54.         private val MAIN_THREAD_HANDLER = Handler(Looper.getMainLooper())
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement