как сделать экран темным и запустить прогрессбар в андроиде?

Я пишу приложение для Android и хочу, чтобы при выполнении httpclient.execute() экран потемнел и появился индикатор выполнения, пока эта строка не будет выполнена, что мне делать? мой код такой:

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

но с этим кодом появляется только индикатор выполнения, а экран не темнеет.


person Navid777    schedule 16.07.2013    source источник
comment
httpclient - это aysnctask?   -  person Broak    schedule 16.07.2013
comment
Вы уверены, что хотите ProgressBar, а не ProgessDialog? Но вам определенно нужна AsyncTask, это может помочь ты   -  person Benjamin Schwalb    schedule 16.07.2013


Ответы (3)


Во-первых, я рекомендую вам делать все сети в асинхронном классе. Вы можете использовать следующий шаблон, чтобы поместить свой код в асинхронный класс. Возьмите 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) {
  }
person Salman Khakwani    schedule 16.07.2013

Если ваш HTTPClient находится в Asynctask, поместите видимость индикатора выполнения GONE в «onPostExecute».

чтобы затемнить экран, вам нужно отобразить диалоговое окно/фрагмент диалогового окна и установить собственный макет с помощью индикатора выполнения, а затем закрыть его, когда загрузка будет завершена.

это автоматически затемнит экран.

person Broak    schedule 16.07.2013

Добавьте часть httpclient.execute() внутри asynctas..

Добавьте предварительную задачу в метод preexecute и опубликуйте задачу внутри метода postexecute.

person zacharia    schedule 16.07.2013