有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android Studio创建模拟进度条

我正在Android Studio中创建一个模拟应用程序,在加载屏幕上,我想创建一个“模拟”进度条,它需要10秒的时间来填充。这只是为了显示应用程序完全编码后的外观

我对安卓 studio没有太多经验,所以请直说我的经验不足,但目前我已经创建了一个for循环,用以下代码运行10次,每次将进度条增加10%:

private ProgressBar progress;

public void mockprogressbar (ProgressBar progress){

     progress = (ProgressBar) findViewById(R.id.progressBar);
     progress.setMax(100);

     for(int i = 1; i < 11; ++i){
        try {
            Thread.sleep(1000);
            progress.setProgress(i*10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
     }  
}

我希望在选择图像时运行此方法时,我会有一个“模拟”进度条,该进度条会等待一秒钟,然后将自身增加10%,直到达到100%,然而,我所拥有的是,当我运行AVD时,代码会一直运行到完成,并跳过以完全显示进度条

我想知道我是否需要在每次增量后以某种方式“更新”进度条,或者在Android Studio中是否可以这样做。如果还有其他更简单的方法,我也有兴趣知道,感谢您提前提供的帮助,再次为我的经验不足表示歉意:)


共 (1) 个答案

  1. # 1 楼答案

    ProgressBar与android studio和eclipse的工作方式没有区别。 尝试下面的示例代码,它可以工作:

     private ProgressDialog progress;
       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          progress = new ProgressDialog(this);
       }
    
    
       public void open(View view){
          progress.setMessage("Downloading Music :) ");
          progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
          progress.setIndeterminate(true);
          progress.show();
    
       final int totalProgressTime = 100;
    
       final Thread t = new Thread(){
    
       @Override
       public void run(){
    
          int jumpTime = 0;
          while(jumpTime < totalProgressTime){
             try {
                sleep(200);
                jumpTime += 5;
                progress.setProgress(jumpTime);
             } catch (InterruptedException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
             }
    
          }
    
       }
       };
       t.start();
       }