2013-07-16 65 views
1

我正在寫一個android應用程序,我想在執行httpclient.execute()時,屏幕變暗,出現一個進度條,直到該行被執行,我該怎麼辦?我的代碼是這樣的:如何讓屏幕變暗並在android中啓動progressBar?

ProgressBar x = (ProgressBar) findViewById("R.id.progress") ; 
x.setVisibility(ProgressBar.VISIBLE) ; 
httpclient.execute() 
x.setVisibility(ProgressBar.GONE) ; 

但使用此代碼只顯示進度欄,屏幕不會變暗。

+0

是httpclient aysnctask? – Broak

+0

你確定你想要一個'ProgressBar'而不是'ProgessDialog'嗎?但你肯定需要一個AsyncTask,[this](http://stackoverflow.com/questions/17527773/displaying-a-progressdialog-while-waiting-for-a-joined-thread)可能會幫助你 –

回答

4

首先,我建議您在Async Class中進行所有聯網。 您可以使用以下模板將代碼放入Async Class中。 將ProgressDialog作爲類變量。

YouClass 
{ 
ProgressDialog dialog; 

onCreate(....) 
{ 
    //Execute the async task here. 
    new myNetworkingTask().execute(""); 
} 

private class myNetworkingTask extends AsyncTask<String, Void, String> { 

    @Override 
    protected String doInBackground(String... params) 
     { 
      //In this method you will do the networking task 
      httpclient.execute(); 
     } 
     return ""; 
    }  

    @Override 
    protected void onPostExecute(String result) { 
      //In this method you will hide the progress bar 
     dialog.dismiss(); 
    } 

    @Override 
    protected void onPreExecute() { 
     //In this method you will display the progress bar. 
     dialog = ProgressDialog.show(MyActivity.this, "", 
        "Loading. Please wait...", true); 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
    } 
0

如果你的了HTTPClient處於的AsyncTask,放在GONE進度條可見的「onPostExecute」

調暗屏幕,你需要顯示一個警告對話框/對話片段,並與進度設置自定義佈局吧,然後在加載完成時關閉它。

會自動調暗屏幕。

0

添加asynctas內httpclient.execute()部分..

添加pretask postexecute方法裏面preexecute方法和後期任務中。