Skip to content Skip to sidebar Skip to footer

How To Show Progress Bar On Webview?

I am trying to open a webpage in my application using WebView. When I open webpage it shows me blank screen for a while and then open that page in browser inside my application. An

Solution 1:

Try this:

getWindow().requestFeature(Window.FEATURE_PROGRESS);

WebViewmWebView= (WebView) findViewById(R.id.mywebview);

mWebView.getSettings().setJavaScriptEnabled(true);

finalActivityactivity=this;

mWebView.setWebChromeClient(newWebChromeClient(){

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

mWebView.loadUrl(URL);

Solution 2:

Here is the code that I am using:

Inside WebViewClient:

webView.setWebViewClient(new WebViewClient() {

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        findViewById(R.id.progress1).setVisibility(View.VISIBLE);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        findViewById(R.id.progress1).setVisibility(View.GONE);
    }

});

Here is the XML :

<ProgressBar
    android:id="@+id/progress1"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

Hope this helps..

Solution 3:

You need to do something like this:

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_PROGRESS);
    this.setProgressBarVisibility(true);
}

And then

finalActivityactivity=this;
mWebView.setWebChromeClient(newWebChromeClient() {
    publicvoidonProgressChanged(WebView view, int progress) {
        activity.setProgress(progress * 100);
    }
});

Update I know it is a bit too late but I have little side note: you shouldn't use setWebViewClient() twice. Second call cancels the first call so you wouldn't get error handling.

Solution 4:

1. In oncreate ur call AsyncTask.

2. In asynctask u just make progress dialog and show progress dialog.

3. In webview client u just show again progress dialog click on any link of web site which open in ur webview and after complete load link we override methodonPageFinished and in this method we dismiss the progress dialog.

oncreate

@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stubsuper.onCreate(savedInstanceState);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.web_view);

    web_view = (WebView) findViewById(R.id.web_view);

    OpenWebSiteInWebViewopensite=newOpenWebSiteInWebView();
    opensite.execute();

}

AsyncTask

privateclassOpenWebSiteInWebViewextendsAsyncTask<String, Void, String> {

    @SuppressWarnings("deprecation")
    @SuppressLint("SetJavaScriptEnabled")
    @OverrideprotectedStringdoInBackground(String... params) {
        web_view.setWebViewClient(newMyWebViewClient());
        web_view.loadUrl("ur site name");
        returnnull;
    }

    @OverrideprotectedvoidonPostExecute(String result) {

    }

    @OverrideprotectedvoidonPreExecute() {

        pd = newProgressDialog(SiteOpenInWebView.this);
        pd.setMessage("Please wait Loading...");
        pd.show();

    }

}

WebViewClient

privateclassMyWebViewClientextendsWebViewClient {
    @OverridepublicbooleanshouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);

        if (!pd.isShowing()) {
            pd.show();
        }

        returntrue;
    }

    @OverridepublicvoidonPageFinished(WebView view, String url) {
        System.out.println("on finish");
        if (pd.isShowing()) {
            pd.dismiss();
        }

    }
}

Solution 5:

Here is the code I'm using in KOTLIN:

privatefunsetupWebView() {

    val webViewClient: WebViewClient = object: WebViewClient() {

        overridefunshouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
            view?.loadUrl(request?.url.toString())
            returnsuper.shouldOverrideUrlLoading(view, request)
        }

        overridefunonPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
            showProgressDialog()
            super.onPageStarted(view, url, favicon)
        }

        overridefunonPageFinished(view: WebView?, url: String?) {
            hideProgressDialog()
            super.onPageFinished(view, url)
        }
    }
    webView.webViewClient = webViewClient

    webView.settings.javaScriptEnabled = true
    webView.settings.defaultTextEncodingName = "utf-8"
}

Post a Comment for "How To Show Progress Bar On Webview?"