¿Cómo mostrar el progreso al cargar una URL a la vista web en Android?

Estoy cargando la URL en la vista web:

WebView webview=(WebView)findViewById(R.id.webview); webview.loadUrl(url); 

Se está tardando un tiempo en cargar la url, durante la cual muestra una pantalla en blanco. Quiero mostrar un cuadro de diálogo de progreso mientras se carga la url:

 ProgressDialog dialog = ProgressDialog.show(this, "HI","Loading......", true); 

Sin embargo, lo anterior es código no está funcionando. Si alguno tiene alguna idea, por favor ayuda. Gracias por adelantado.

configure un WebViewClient en su WebView, inicie su diálogo de progreso en usted en el método onCreate() y deséchelo cuando la página haya terminado de cargarse en la página onPageFinished(WebView view, String url)

 import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.Window; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; public class Main extends Activity { private WebView webview; private static final String TAG = "Main"; private ProgressDialog progressBar; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); this.webview = (WebView)findViewById(R.id.webview); WebSettings settings = webview.getSettings(); settings.setJavaScriptEnabled(true); webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); progressBar = ProgressDialog.show(Main.this, "WebView Example", "Loading..."); webview.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.i(TAG, "Processing webview url click..."); view.loadUrl(url); return true; } public void onPageFinished(WebView view, String url) { Log.i(TAG, "Finished loading URL: " +url); if (progressBar.isShowing()) { progressBar.dismiss(); } } public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Log.e(TAG, "Error: " + description); Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); alertDialog.setTitle("Error"); alertDialog.setMessage(description); alertDialog.setButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { return; } }); alertDialog.show(); } }); webview.loadUrl("http://www.google.com"); } } 

su diseño main.xml

 < ?xml version="1.0" encoding="utf-8"?>    

Deberá sobrepasar las devoluciones de llamada iniciadas por página y por página

 mWebView.setWebViewClient(new WebViewClient() { public void onPageStarted(WebView view, String url, Bitmap favicon) { if (progressBar!= null && progressBar.isShowing()) { progressBar.dismiss(); } progressBar = ProgressDialog.show(WebViewActivity.this, "Application Name", "Loading..."); } public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } public void onPageFinished(WebView view, String url) { if (progressBar.isShowing()) { progressBar.dismiss(); } } public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { alertDialog.setTitle("Error"); alertDialog.setMessage(description); alertDialog.setButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { return; } }); alertDialog.show(); } }); 

Vea el código de muestra. Te ayuda

  private ProgressBar progressBar; progressBar=(ProgressBar)findViewById(R.id.webloadProgressBar); WebView urlWebView= new WebView(Context); urlWebView.setWebViewClient(new AppWebViewClients(progressBar)); urlWebView.getSettings().setJavaScriptEnabled(true); urlWebView.loadUrl(detailView.getUrl()); public class AppWebViewClients extends WebViewClient { private ProgressBar progressBar; public AppWebViewClients(ProgressBar progressBar) { this.progressBar=progressBar; progressBar.setVisibility(View.VISIBLE); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); progressBar.setVisibility(View.GONE); } } 

Gracias.

Necesita establecer un WebViewClient propio para su WebView ampliando la clase WebViewClient .

Debe implementar los dos métodos en PageStarted (mostrar aquí) y en PageFinished (descartar aquí).

Se puede encontrar más orientación sobre este tema en el tutorial de WebView de Google.

  public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { alertDialog.setTitle("Error"); alertDialog.setMessage(description); alertDialog.setButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { return; } }); alertDialog.show(); } });