2014-03-04 61 views
1

我需要設置一個圓形進度條,同時做一些東西。 我已經做到了這一點:在我OnCreate()如何在做東西時實現進度條?

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

,然後做的事情後調用progressBar.setVisibility(View.Visible)View.Gone,但進度不顯示。

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

doThings方法需要幾秒鐘才能完成執行。 請幫忙!!

+0

這不起作用,您需要使用後臺線程並定期在主線程上發佈用戶界面更新。在文檔中查看AsyncTask。 – Merlevede

+0

你可以發佈你的代碼嗎? –

+1

更適合在AsyncTask中使用進度對話框 –

回答

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

您可以爲這種情況應用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