2011-02-14 13 views
8

En mi aplicación para Android estoy abriendo una vista web. Quiero ocultar la URL que se está cargando, por lo que la barra de progreso de la ventana predeterminada no funciona para mí.show progress dialog on webview

¿Hay alguna manera de que pueda agregar el diálogo de progreso en la vista web?

Estoy usando el siguiente código.

mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 

    final Activity activity = this; 

    mWebView.setWebChromeClient(new WebChromeClient(){ 

    public void onProgressChanged(WebView view, int progress) { 
    activity.setTitle("Loading..."); 
    activity.setProgress(progress * 100); 
    if(progress == 100) 
    activity.setTitle("My title"); 
    } 
    }); 

    mWebView.loadUrl(Url); 
    mWebView.setWebViewClient(new HelloWebViewClient()); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

}

private class HelloWebViewClient extends WebViewClient { 
    ProgressDialog MyDialog=new ProgressDialog(context); 

    public boolean shouldOverrideUrlLoading(WebView view, String url) {  
     MyDialog.show(); 
     view.loadUrl(url); 
     return true; 
     } 

Por favor comparta sus valiosas sugerencias.

Gracias de antemano :)

Respuesta

29

Si oculta por el título de la aplicación "android: theme =" @ android: estilo/Theme.NoTitleBar "" de manifiesto a continuación, que no verá la barra de progreso que está siendo representada en título por este código:

this.getWindow().requestFeature(Window.FEATURE_PROGRESS);    
    setContentView(R.layout.main); 

// Makes Progress bar Visible 
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); 

para que pueda mostrar barra de progreso con un cuadro de diálogo como este en el interior del onCreate():

final Activity activity = this; 

final ProgressDialog progressDialog = new ProgressDialog(activity); 
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
progressDialog.setCancelable(false); 

browser.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) { 
     progressDialog.show(); 
     progressDialog.setProgress(0); 
     activity.setProgress(progress * 1000); 

     progressDialog.incrementProgressBy(progress); 

     if(progress == 100 && progressDialog.isShowing()) 
      progressDialog.dismiss(); 
    } 
}); 
+0

Gracias, esto es realmente lo que la gente quiere! – Abramodj

+0

funciona como el encanto. gracias .. puede guiar ... Pero ¿cómo puedo mostrar la barra de progreso una sola vez ... solo en cada clic después de que la aplicación cargó –

+1

¿Por qué establece progressDialog para la actividad y para el progresoDialog? parece que estás haciendo lo mismo dos veces? funciona bien aunque – JonWells