Home > Tricks & Tips > Load WebView with ProgressDialog

Load WebView with ProgressDialog


It’s very useful to determine the status while loading a web page. Here a sample to show ProgressDialog to track when WebVIew done with loading URL.

public class MainActivity extends Activity {

	WebView mWeb;
	ProgressDialog mProgress;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // no need to use title bar
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        // set webview as main content only
        mWeb = new WebView(this);
        setContentView(mWeb);
        // set Javascript
        WebSettings settings = mWeb.getSettings();
        settings.setJavaScriptEnabled(true);
        // the init state of progress dialog
        mProgress = ProgressDialog.show(this, "Loading", "Please wait for a moment...");

        // add a WebViewClient for WebView, which actually handles loading data from web
        mWeb.setWebViewClient(new WebViewClient() {
        	// load url
        	public boolean shouldOverrideUrlLoading(WebView view, String url) {
        		view.loadUrl(url);
        		return true;
        	}

        	// when finish loading page
        	public void onPageFinished(WebView view, String url) {
        		if(mProgress.isShowing()) {
        			mProgress.dismiss();
        		}
        	}
        });
        // set url for webview to load
        mWeb.loadUrl("http://www.cnn.com");
    }
}

Hope it helps!

Cheers,
Pete Houston

About these ads
  1. fear
    August 27, 2013 at 9:22 am | #1

    change color ProgressDialog?

  2. August 3, 2013 at 9:21 pm | #2

    Thanks a lot! it works well! :)

  3. xristina
    October 18, 2012 at 3:56 pm | #3

    Thanks!That was a really good way to load a web view!!!!

  4. Justin
    May 27, 2012 at 3:52 pm | #4

    This is great, but what about when a user clicks on a link inside webview. How do you show a ProgressDialog every time someone clicks on a link inside the web view? This only shows on the first load. I’m pulling my hair out trying to figure this out!

    • April 25, 2013 at 10:10 pm | #5

      have you found the solution yet ??

      • January 8, 2014 at 12:36 am | #6

        Yes,
        I have found a solution.

        Add “mProgress.show();” into the shouldOverrideUrlLoading() function above view.loadUrl(url);

  5. Ferran
    February 6, 2012 at 3:42 pm | #7

    Thanks mate!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: