2014-11-09 2 views
0

Я использую этот код здесь, чтобы зацикливать и обновить прогресс на настраиваемом уровне прогресса.Slow down progressbar progression

class MyThreadRunner implements Runnable { 
     // @Override 
    int count = 0; 
     public void run() { 
      try { 
      while (count < 90) { 
       Thread.sleep(10); 
       count += 1; 
       progressBar.setProgress(count); 
       progressBar.setText(count + "%"); 
      } 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       } 
}; 

Когда он становится ближе к концу, я хочу, чтобы это начать замедление, возможно ли это без придется сделать еще время цикла?

ответ

1

Почему бы просто не изменить время сна для значений более 90?

class MyThreadRunner implements Runnable { 
     // @Override 
    int count = 0; 
     public void run() { 
      try { 

      while (count < 100) { 

       //500 is half a second... 
       int sleepTime = count < 90 ? 10 : 500; 
       Thread.sleep(sleepTime); 

       count += 1; 
       progressBar.setProgress(count); 
       progressBar.setText(count + "%"); 
      } 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       } 
};  
0
class MyThreadRunner implements Runnable { 
     // @Override 
    int count = 0; 
    int sleepTime = 0; 
     public void run() { 

      while (count < 100) { 
       sleepTime = count < 90 ? 10 : 100; 
       Thread.sleep(sleeptime); 

      } 


};