0

我的应用程序以包含进度条的活动开始。该活动在 5 秒后自动切换到另一个活动。我想使用流畅的进度条 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);

}

}

我没有其他方法可以这样做。我需要更有效的方法和平滑的进度条......

4

2 回答 2

0

创建一个 Runnable。r 并在其 run() 方法中调用 handler.postDelayed(r, 500) ,确保有条件地调用它,因此它不会永远循环

于 2013-07-25T08:09:51.293 回答
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();
于 2013-07-25T08:34:46.953 回答