Android ProgessBar while loading WebView
android, android-asynctask, android-progressbar, android-webview
Solution
Check the source code. Help you and solve your problem...
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);
}
}
I think it help you.
Thanks.
Problem
In my application, I have a `WebView` which loads any URL from the internet. Now, sometimes due to slow networks the page takes a long time to load and the user sees only a blank screen. I want to show a `ProgressBar` while the `WebView` gets loaded and hide the `ProgessBar` when the `WebView` gets loaded completely. I know how to use the `ProgressBar` and `AsyncTask`s, but here is my problem. This is the code that I use to load my `WebView`. ``` mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new HelloWebViewClient()); mWebView.loadUrl(web_URL); ``` And this my custom `WebViewClient` class ``` private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } ``` Now, if I try to show the `ProgressBar` using `AsyncTask`s then I guess I would have to give the code to load the URL in the `doInBackGround()` function of my `AsyncTask` and show the progress through the `onProgressUpdate()` function. But, how do I load the URL inside the doInBackground() as doInBackground() runs on the Non-UI thread and I wont be able to use `mWebView.loadUrl(web_URL)` inside it. Any suggestions? Am I missing something obvious? Please guide me.