使用WebView目的:
1.兼容已有的项目;2.可以动态更新;
注:用WebView展示html会造成耗电量,加载页面也会造成发热。
WebView的使用方法:
- webview = (WebView) findViewById(R.id.webview);
- WebSettings webSettings = webview.getSettings();
- //设置WebView属性,能够执行Javascript脚本
- webSettings.setJavaScriptEnabled(true);
- //设置可以访问文件
- webSettings.setAllowFileAccess(true);
- //设置支持缩放
- webSettings.setBuiltInZoomControls(true);
- //加载需要显示的网页
- webview.loadUrl("http://www.baidu.com");
- //设置Web视图
- webview.setWebViewClient(new webViewClient ());
-
- 在AndroidManifest.xml中添加网络访问权限
-
-
-
- // 简单地加载一个页面
mWebview .loadUrl(url);
// 加载assets目录下的页面(assets\index.html)
mWebview .loadData( "file:///android_asset/index.html" );但你会发现,如果点击页面的某条链接进行跳转的话,会启动系统的默认浏览器进行加载,调出了我们本身的应用。要解决这个问题我们需要借助于WebViewClient。
[自定义链接的跳转显示]
mWebview .setWebChromeClient( newWebViewClient() {
public boolean shouldOverrideUrlLoading (WebView view, String url){
// 使用当前的WebView加载页面
view.loadUrl(url);
return true ;
}
});[页面回退]
实现了跳转后,你忽然想返回到前一个浏览过的页面是,发现返回键是直接退出应用了。要实现类似系统浏览器那样的,返回键先是返回到上一个页面,直到最初始的页面才退出的话,可以这么做:
// 重写onKeyDown
publicboolean onKeyDown ( int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent. KEYCODE_BACK ) && mWebview .canGoBack()) {
mWebview .goBack();
return true ;
}
return super .onKeyDown(keyCode, event);
}
[进度条]
要是再加上加载进度条那就完美了,我们可以借助WebChromeClient来实现:
mWebview .setWebChromeClient( newWebChromeClient() {
public void onProgressChanged (WebView view, int newProgress){
loadingProgress .setProgress(newProgress);
}
});当WebView出现错误时(无网络):在webView.setWebViewClient方法下重写onReceivedError方法,可在布局文件下添加一个TextView,textView.setText(“404 error”);然后隐藏webView.setVisihilty(View.GONE);
WebView的重新刷新:webView.reload();