|
WebView是android.webkit包下的一个组件,能用来显示网页。
WebView默认是不带地址栏和加载进度条的,单单是一个显示页面内容的面板。
使用WebView非常简单,主要是通过load方法进行加载。
[使用WebView打开一个网页]
1.在布局xml文件中定义WebView组件
< WebView android:id = "@+id/webview"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
/>
2.在AndroidManifest.xml中添加网络访问权限
<uses-permission android:name="android.permission.INTERNET" />
3.通过load函数加载网页
mWebview = (WebView) this .findViewById(R.id. webview );
// 简单地加载一个页面
mWebview .loadUrl(url);
// 加载assets目录下的页面(assets\index.HTML)
mWebview .loadData( "file:///android_asset/index.html" );
但你会发现,如果点击页面的某条链接进行跳转的话,会启动系统的默认浏览器进行加载,调出了我们本身的应用。要解决这个问题我们需要借助于WebViewClient。
[自定义链接的跳转显示]
mWebview .setWebChromeClient( new WebViewClient() {
/**
* 自定义网页加载
*/
public boolean shouldOverrideUrlLoading(WebView view, String url){
// 使用当前的WebView加载页面
view.loadUrl(url);
return true ;
}
});
在WebViewClient中还有很多的方法,例如:
/**
* 网页开始加载
*/
public void onPageStarted(WebView view, String url, Bitmap favicon);
/**
* 网页加载完毕(仅指主页,不包括图片)
*/
public void onPageFinished(WebView view, String url);
/**
* 加载页面资源
*/
public void onLoadResource(WebView view, String url)
/**
* 错误提示
*/
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
我们都可以通过重写来实现自己的个性化操作。
[页面回退]
实现了跳转后,你忽然想返回到前一个浏览过的页面是,发现返回键是直接退出应用了。要实现类似系统浏览器那样的,返回键先是返回到上一个页面,直到最初始的页面才退出的话,可以这么做:
// 重写onKeyDown
public boolean onKeyDown ( int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent. KEYCODE_BACK ) && mWebview .canGoBack()) {
mWebview .goBack();
return true ;
}
return super .onKeyDown(keyCode, event);
}
[进度条]
要是再加上加载进度条那就完美了,我们可以借助WebChromeClient来实现:
mWebview .setWebChromeClient( new WebChromeClient() {
/**
* 进度条发生变化
*/
public void onProgressChanged (WebView view, int newProgress){
loadingProgress .setProgress(newProgress);
}
});
>>更多的WebView的使用说明请参考API文档。 |
|