2013-07-25 2 views
0

Мое приложение начинается с действия, содержащего индикатор выполнения. Эта активность переключается на другую активность через 5 секунд автоматически. Я хочу использовать плавный индикатор выполнения в течение 5 секунд. Я попробовал этот код:Как работает индикатор хода Android в течение 5 секунд, а затем изменения активности

progressBar = (ProgressBar) findViewById(R.id.prog_bar); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 500); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 1000); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 1500); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 2000); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 2500); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 3000); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 3500); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 4000); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 4500); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 5000); 
    progressBar = (ProgressBar) findViewById(R.id.prog_bar);  
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 500); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 1000); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 1500); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 2000); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 2500); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 3000); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 3500); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 4000); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 4500); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      progressBar.setProgress(progressBarStatus); 
      progressBarStatus += 10;   
     } 
    }, 5000); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      final Intent mainIntent = new Intent(MainPage.this, DashboardActivity.class); 
      MainPage.this.startActivity(mainIntent); 
      MainPage.this.finish(); 

     } 
    }, 4500); 

} 

}

я не получил другой способ сделать so.I нужно более эффективный способ и плавный прогресс бар для этого ....

ответ

0

Попробуйте

new AsyncTask<Void, Integer, Void>(){ 

       @Override 
       protected Void doInBackground(Void... params) { 
        int progressStatus = 0; 
        while (progressStatus < 5000) { 
         progressStatus++; 
         publishProgress(progressStatus); 
         try { 
          Thread.sleep(1); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 
        } 
        return null; 
       } 

       @Override 
       protected void onProgressUpdate(Integer... values) { 
        progressBar.setProgress(values[0]); 

       } 
      }.execute(); 
+0

это сработало ..... спасибо много ... :) –

0

создать Runnable. г и называют handler.postDelayed (г, 500) в своем методе Run(), убедитесь, что он называется условно, так оно не цикл навсегда

+0

, но это не будет делать прогрессбар работать бесперебойно. Мой прогрессбар принимает прыжки ... :( –

+0

Скачки, какие прыжки? – pskink