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?"