功能:能够使安卓程序中打开互联网中的网页。
WebView是View的一个子类,可以使该控件在Activity中显示出网页。
1.首先我们应该在相应的布局中加入WebView,例如:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/webview_1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
该处显示的网页将会占满整个屏幕,程序员可以根据自己所需改变该控件的大小,这里不做介绍。
2.想要使用WebView访问互联网,必须要在manifest中加上访问网络的权限,对应的代码如下:
//允许访问网络
<uses-permission android:name="android.permission.INTERNET" />
3.将WebView控件在Activity中对应起来:
WebView myWebView = (WebView) findViewById(R.id.webview_1);
4.设置访问网页类型:
a.访问互联网:myWebView.loadUrl("http://www.baidu.com");
b.访问本地文件中的网络:
myWebView.loadUrl("file:///android_asset/XX.html");
本地文件存放位置在DDMS中assets文件下。
5.我们可以重写一些方法:
//设置表示支持js
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
//显示放大缩小按钮
settings.setBuiltInZoomControls(true);
//双击缩放
settings.setUseWideViewPort(true);
//设置网页加载监听
mWebView.setWebViewClient(new WebViewClient(){
//网页开始加载,通常在加载网页的时候在控件上展示Prgress,提高用户体验
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
pbProgress.setVisibility(View.VISIBLE);
System.out.println("webview.......start"+ url);
}
//网页加载结束,清楚Progress
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
pbProgress.setVisibility(View.INVISIBLE);
System.out.println("webview.......end"+ url);
}
/**
* 所有跳转链接都会在此方法中调用,全部加载在webview当中,
* 重写该方法
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
System.out.println("跳转的url"+url);
view.loadUrl(url);
return true;
// return super.shouldOverrideUrlLoading(view, url);
}
});
// mWebView.goBack();
/**
*同样是网页加载的监听,主要是和上面监听不同
*在这个可以监听加载进度等其他功能
*/
mWebView.setWebChromeClient(new WebChromeClient(){
/**
* 进度发生变化
*/
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
System.out.println("加载进度"+ newProgress);
}
/**
* 获取网页标题
*/
@Override
public void onReceivedTitle(WebView view, String title) {
// TODO Auto-generated method stub
super.onReceivedTitle(view, title);
System.out.println("网页标题"+title);
}
});
// mWebView.loadUrl("http://www.baidu.com/");
mWebView.loadUrl(rurl);
}
7.根据不同需求可以使打开的网页在WebView中展示也可以调用系统本身的浏览器,在直接设置
myWebView.setWebViewClient(new WebViewClient());在这个匿名内部类中重写shouldOverrideUrlLoading(WebView view, String url)方法,如上所诉可以实现webview控件中打开网页的所有的链接都是在WebView中展示出来。