2012-02-23 14 views
8

Estoy haciendo una aplicación de Android y tiene que cargar algunos datos a través de Internet (solo algunos datos, no todos). Por lo tanto, cuando se carguen los datos y la conexión a Internet sea lenta, quiero mostrar un ícono de "Cargando ..." al usuario.¿Cómo se muestra el estado "Cargando" en Android?

Entonces, ¿cómo puedo hacer esto? Muestre un ícono de "Cargando ..." mientras los datos se cargan en el fondo, y cuando está completamente cargado, oculte el ícono.

¡Gracias de antemano!

+0

ver esto es utilizar ful [http progreso: //www.41post.com/4588/programming/android-coding-a-loading-screen-part-1](http://www.41post.com/4588/programming/android-coding-a-loading-scree n-parte-1) – NagarjunaReddy

Respuesta

21

uso asíncrono de tareas para su estado de avance.

new SomeTask(0).execute(); 

/** Inner class for implementing progress bar before fetching data **/ 
private class SomeTask extends AsyncTask<Void, Void, Integer> 
{ 
    private ProgressDialog Dialog = new ProgressDialog(yourActivityClass.this); 

    @Override 
    protected void onPreExecute() 
    { 
     Dialog.setMessage("Doing something..."); 
     Dialog.show(); 
    } 

    @Override 
    protected Integer doInBackground(Void... params) 
    { 
     //Task for doing something 

     return 0; 
    } 

    @Override 
    protected void onPostExecute(Integer result) 
    { 

     if(result==0) 
     { 
      //do some thing 
     } 
     // after completed finished the progressbar 
     Dialog.dismiss(); 
    } 
} 
+0

¡Muchas gracias por la respuesta! ¡Fue realmente informativo y útil! – Roshnal

+0

@Roshnal heno echa un vistazo a este enlace también http://android-developers.blogspot.in/2010/07/multithreading-for-performance.html –

2

Uso AsyncTask junto con el diálogo en completion..That tarea va a hacer ..

0

En el método onCreate:

WebView mWebView; 
ProgressDialog pgDiagWebView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webview); 
    pgDiagWebView = ProgressDialog.show(CreateAccountWebView.this, "Loading", "Wait", true); 
    mWebView = (WebView) findViewById(R.id.registerWebView); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.setWebViewClient(new ResgisterWebViewClient()); 
    mWebView.loadUrl("http://www.google.com/"); 
} 

class ResgisterWebViewClient extends WebViewClient { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     // TODO Auto-generated method stub 
     super.onPageFinished(view, url); 
     pgDiagWebView.dismiss(); 
    } 
} 
1

Uso AsyncTask para operaciones en segundo plano, a continuación, mostrar de diálogo, como a continuación

private class ProgressTask extends AsyncTask<String, Void, Boolean> { 
    private ProgressDialog dialog; 
    List<Message> titles; 
    private ListActivity activity; 
    //private List<Message> messages; 
    public ProgressTask(ListActivity activity) { 
     this.activity = activity; 
     context = activity; 
     dialog = new ProgressDialog(context); 
    } 



    /** progress dialog to show user that the backup is processing. */ 

    /** application context. */ 
    private Context context; 

    protected void onPreExecute() { 
     this.dialog.setMessage("Progress start"); 
     this.dialog.show(); 
    } 

     @Override 
    protected void onPostExecute(final Boolean success) { 
      List<Message> titles = new ArrayList<Message>(messages.size()); 
      for (Message msg : messages){ 
       titles.add(msg); 
      } 
      MessageListAdapter adapter = new MessageListAdapter(activity, titles); 
      activity.setListAdapter(adapter); 
      adapter.notifyDataSetChanged(); 

      if (dialog.isShowing()) { 
      dialog.dismiss(); 
     } 

     if (success) { 
      Toast.makeText(context, "OK", Toast.LENGTH_LONG).show(); 
     } else { 
      Toast.makeText(context, "Error", Toast.LENGTH_LONG).show(); 
     } 
    } 

    protected Boolean doInBackground(final String... args) { 
     try{  
      BaseFeedParser parser = new BaseFeedParser(); 
      messages = parser.parse(); 


      return true; 
     } catch (Exception e){ 
      Log.e("tag", "error", e); 
      return false; 
     } 
     } 


} 

}

Cuestiones relacionadas