如何使屏幕变暗并在android中启动progressBar?

时间:2013-07-16 11:47:32

标签: java android eclipse android-progressbar

我正在编写一个Android应用程序,我希望在执行httpclient.execute()时,屏幕变暗,并且会出现一个进度条,直到执行此行,我该怎么办?我的代码是这样的:

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

但是使用此代码只会显示进度条,屏幕不会变暗。

3 个答案:

答案 0 :(得分: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) {
  }

答案 1 :(得分:0)

如果您的HTTPClient位于Asynctask中,请将您的进度条可见性GONE放入'onPostExecute'

要使屏幕变暗,您需要显示警告对话框/对话框片段并使用进度条设置自定义布局,然后在加载完成后将其关闭。

会自动调暗屏幕。

答案 2 :(得分:0)

在asynctas ..

中添加httpclient.execute()部分

在preexecute方法中添加pretask并在postexecute方法中发布任务。