Android 如何在工作时实现进度条?

Android 如何在工作时实现进度条?,android,progress-bar,progress,android-progressbar,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(thumbn

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

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

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

ProgressDialog progress = new ProgressDialog(this);

您可以在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文档


这有一个完整的应用程序演示,您可能想查看它。

您可以为这种情况应用AsyncTask

您可以从这里查阅更多信息

您可以将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
//访问web的异步任务
私有类YourTask扩展了AsyncTask{
进展对话myPd_bar;
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
myPd_bar=新建进度对话框(class.this);
myPd_bar.setMessage(“加载…”);
多年电价确定标准集标题(标题);
myPd_bar.show();
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
//事情应该在做,直到进度条关闭
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
myPd_bar.解散();
}
}//结束异步任务

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