如何在做事的同时实现进度条?

时间:2014-03-04 03:39:24

标签: android progress-bar progress android-progressbar

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

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需要几秒钟才能完成执行。 请帮忙!!

2 个答案:

答案 0 :(得分:2)

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

enter image description here

您可以在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有一个关于它的完整应用程序演示,您可能需要查看它。

答案 1 :(得分:1)

您可以针对此案例应用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