【问题标题】:How android progress bar run smoothly for 5 seconds and then changes activityandroid进度条如何平稳运行5秒然后改变activity
【发布时间】:2013-07-25 07:58:41
【问题描述】:

我的应用以包含进度条的活动开始。该活动在 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);

}

}

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

【问题讨论】:

    标签: android android-widget android-progressbar


    【解决方案1】:

    试试这个

     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();
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 但这不会使进度条顺利运行。我的进度条正在跳跃……:(
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多