Home > Blockchain >  How to add a delay in For loop in kotlin android
How to add a delay in For loop in kotlin android

Time:09-11

I want to animate the progress bar so i am setting its progress using for loop but the loop is too much faster that i can't see the animation . I want the code to add a delay in the loop , i tried using thread delay but not working - here is the code

      private fun showProgress() {

    
        for(i in 0..100){
            
            Thread{
            binding.customProgressBar.progress=i
            Thread.sleep(100)

        }

    }
  }

Solution : Was not calling start method , but if there any other approach then please let me know

 private fun showProgress() {

    Thread {
        for (i in 0..100) {

            binding.customProgressBar.progress = i
            Thread.sleep(100)
        }

    }.start()


}

now i want to terminate the thread when fragment is on pause state . how to achieve that ?

CodePudding user response:

since you are using kotlin it is better to use coroutine, you can achieve your goal with something like this:

private suspend fun someProgress(scope: CoroutineScope) {
    val job = scope.launch {
        for (i in 0..100) {
            binding.customProgress.progress = i
            delay(100)
        }
    }

    // use job.cancel() for cancelling the job or use job.join() for waiting for the job to finish
}

you can learn more about coroutine and how it works in here.

  • Related