我需要在做一些事情时设置循环进度条。 我已经这样做了:
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需要几秒钟才能完成执行。 请帮忙!!
答案 0 :(得分:2)
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有一个关于它的完整应用程序演示,您可能需要查看它。
答案 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