【问题标题】:How to implement progress bar while doing stuff?做事时如何实现进度条?
【发布时间】:2014-03-04 03:39:24
【问题描述】:

我需要在做一些事情时设置一个圆形进度条。 我已经这样做了:

progressBar = (ProgressBar) findViewById(R.id.progressBar1);

在我的OnCreate()中,然后在办事后调用progressBar.setVisibility(View.Visible)View.Gone,但是progressBar没有显示。

 progressBar.setVisibility(View.VISIBLE);
 thumbnailAux = doThings(thumbnail);
 image.setImageBitmap(thumbnailAux);
 progressBar.setVisibility(View.GONE);

doThings 方法需要几秒钟才能完成执行。 请帮忙!!

【问题讨论】:

  • 这不起作用,您需要使用后台线程并定期在主线程上发布用户界面更新。查看文档中的 AsyncTask。
  • 你能发布你的代码吗?
  • 更好地使用 AsyncTask 中的进度对话框

标签: android progress-bar progress android-progressbar


【解决方案1】:

Android 有一个进度条的预定义类,它在一个名为 ProgressDialog 的类中。它看起来像这样:

您可以在 onCreate() 中添加此代码并像这样设置 progressDialog 的状态:

ProgressDialog progress = new ProgressDialog(this);

还将以下代码添加到后台线程。

private class ProgressThread extends Thread {

    private ProgressDialog progress;

    public ProgressThread(Context context, ProgressDialog progress) {
        progress.setMessage("Downloading Music :) ");
        progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progress.setIndeterminate(true);
    }

    public void run() {
        // update progressbar here
    }
}

更多详情可以查看Android API文档here

这个site 有一个完整的应用程序演示,你可能想看看。

【讨论】:

    【解决方案2】:

    您可以为这种情况应用 AsyncTask。

    你可以参考这个link的更多信息。

    您可以将 progressDialog 添加到 onPreExecute 方法,然后在 onPostExecute 方法中关闭。

    // Async Task to access the web
        private class YourTask extends AsyncTask<String, Void, String> {
                ProgressDialog myPd_bar;
            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub
                myPd_bar=new ProgressDialog(class.this);
                myPd_bar.setMessage("Loading....");
                myPd_bar.setTitle(Title);
                myPd_bar.show();
                super.onPreExecute();
            }
    
            @Override
            protected String doInBackground(String... params) {
    
                 //Things should do in, until progress bar close
                 return null;
    
            }
    
            @Override
            protected void onPostExecute(String result) {
    
                myPd_bar.dismiss();
            }
        }// end async task
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 2010-11-11
      • 1970-01-01
      相关资源
      最近更新 更多