使用webview加载网页
一、webview加载资源类型
1.1 加载web资源 webview.loadUrl("http://www.baidu.com");
1.2 加载本地资源 webview.loadUrl("file:///android_asset/xxx.html");
二、webview处理页面导航方式
webview加载一个网页时,一般默认处理是打开系统自带的或者第三方的浏览器,然后跳转到相应的网页,但是如果你想要在本项目中显示一个网页的话则需要重新设置。
在本页面中打开网页的方法:
mWebview=(WebView)findViewById(R.id.webview);
mWebview.loadUrl("http://www.baidu.com");
mWebview.setWebViewClient(new WebViewClient(){
//如果返回值为true时,则在本页面中打开网页
//如果返回值为false时,则调用系统的浏览器或者是第三方浏览器
@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {
view.loadUrl(url);
return true;
}
});
三、webview中使用JavaScript
如果想要在web页面中使用JavaScript,则需要在webview中启用JavaScript。启用JavaScript可以通过webview中的WebSettings,可以通过getSettings()获取WebSettings的值,然后通过setJavaScriptEnabled来启用JavaScript。
WebSettings webSettings=mWebview.getSettings();
webSettings.setJavaScriptEnabled(true);
四、webview中的后退
正常情况下,如果我们不做处理的话,当我们在网页中点击多个链接时,然后点击返回按钮时,会整个退出应用,这样的效果体验很不好,所以一般我们都会重写系统的返回操作功能,然后判断当前网页是否具有返回的功能,如果可以的话,我们就返回到上个页面而不是退出整个应用。相应的代码为:
@Override
public boolean onKeyDown (int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && mWebview.canGoBack()) {
mWebview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
五、webview中显示加载的进度
有的时候我们显示一个网页时,如果不给力的话,就会一直显示一个空白页面,这样用户体验感觉不是很好,这种情况下,我们可以通过显示一个进度条,告诉用户当前已经加载了多少,这样就可以改善用户体验,给用户一个良好的体验。
mWebview.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged (WebView view, int newProgress) {
//webView的加载progress为0-100,当progress=100时提示加载完成
if (newProgress==100){
//加载完成时所做的操作,如关闭对话框等。
}else{
//正在加载中所做的操作,如显示一个进度条等。
}
}
});
六、webview缓存使用
当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹: 我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下. WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即AppCache)。google的官方说明为:
代码设置为:
WebSettings webSettings = mWebview.getSettings();
//优先使用本地缓存
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);