Here is my code that I have used to show the progress bar inside webview. Pls Correcr my code, to show horizontal style Progress Bar to track when WebVIew done with loading URL, show progress bar each time user clicks links, add code to show progressbar.
package com.pskpartha.droidwebview;
import com.pskpartha.droidwebview.info.Info;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebSettings.PluginState;
import android.widget.ProgressBar;
public class DroidWebViewActivity extends Activity {
/** Called when the activity is first created. */
Context con;
private WebView fweBview;
private WebSettings webSettings;
ProgressBar progressBar;
String url = Info.WebUrl;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
con = this;
try {
if (!SharedPreferencesHelper.isOnline(con)) {
AlertMessage.showMessage(con, "", "No internet connection");
return;
}
updateWebView(url);
} catch (Exception e) {
// TODO: handle exception
}
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
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);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && fweBview.canGoBack()) {
fweBview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
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);
}
}
private void updateWebView(String url) {
// TODO Auto-generated method stub
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
fweBview = (WebView) findViewById(R.id.fbwebView);
fweBview.getSettings().setJavaScriptEnabled(true);
fweBview.getSettings().setDomStorageEnabled(true);
fweBview.getSettings().setPluginState(PluginState.ON);
webSettings = fweBview.getSettings();
webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
webSettings.setBuiltInZoomControls(true);
fweBview.loadUrl(url);
fweBview.setWebViewClient(new HelloWebViewClient());
}
// /---- Rating Button-----------------------------
public void btnRating(View v) {
try {
alertbox(null, null);
} catch (Exception e) {
// TODO: handle exception
}
}
protected void alertbox(String title, String mymessage) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Encourage us By Rating Our App").setCancelable(
false).setTitle("").setPositiveButton("Rate Now",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// finish the current activity
// AlertBoxAdvance.this.finish();
/*
* Intent myIntent = new Intent(
* Settings.ACTION_SECURITY_SETTINGS);
* startActivity(myIntent);
*/
Intent viewIntent = new Intent(
"android.intent.action.VIEW",
Uri
.parse(Info.GooglePlayAppUrl));
startActivity(viewIntent);
dialog.cancel();
}
}).setNegativeButton("Later",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// cancel the dialog box
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
// ------------ Share button---------------------
public void btnShare(View v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
" ");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "shareBody");
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}
// ------------ Home button---------------------
public void btnHome(View v) {
try {
updateWebView(url);
} catch (Exception e) {
// TODO: handle exception
}
// Intent i = new Intent(DroidWebViewActivity.this,
// DroidWebViewActivity.class); // your class
// startActivity(i);
}
// ------------ Email button---------------------
public void btnEmail(View v) {
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL,
new String[] { "" });
email.putExtra(Intent.EXTRA_SUBJECT, Info.eMailSubject);
email.putExtra(Intent.EXTRA_TEXT, Info.eMailDetails);
email.setType("message/rfc822");
startActivity(Intent.createChooser(email, "Choose an Email client :"));
}
// ------------ Call button---------------------
private void call() {
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+Info.phoneNumber+""));
startActivity(callIntent);
} catch (ActivityNotFoundException activityException) {
}
}
public void btnPhone(View v) {
try {
call();
} catch (Exception e) {
// TODO: handle exception
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="9"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:orientation="vertical" >
<ProgressBar
android:id="@+id/progressBar12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</RelativeLayout>
<WebView
android:id="@+id/fbwebView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
</LinearLayout>'
Here is the Modified Java File and Also The XML..
The Java File is DroidWebViewActivity
and The XML File... XML File
Hope it works for you.
Thanks