WebView是Android用来显示网页的系统控件,它基于开源的浏览器引擎WebKit(在iOS中,UI控件UIWebView也是基于WebKit引擎;Chrome浏览器和Safari浏览器也是基于WebKit引擎的),下面将介绍控件WebView的基本用法。
声明访问互联网访问权限
在AndroidManifest 中声明互联网访问权限:
<uses-permission android:name="android.permission.INTERNET" />
给ViewView设置属性
- 是否支持JavaScript
mWebView.getSettings().setJavaScriptEnabled(boolean flag);
- 是否支持缩放
mWebView.getSettings().setSupportZoom(boolean support);
- 是否显示缩放工具
mWebView.getSettings().setBuiltInZoomControls(boolean enabled);
- 默认的字体大小
mWebView.getSettings().setDefaultFontSize(int size);
加载内容
- 加载Internet上的网页
mWebView.loadUrl("http://www.apple.com.cn");
- 加载本地网页
文件存放在assets目录下。新建一个test子文件夹
mWebView.loadUrl("file:///android_asset/test/HelloWorld.html");
- 加载HTML代码片段数据
String htmlString = "<h1>Android</h1><p>Hello World !<br /></p>";
mWebView.loadData(htmlString, "text/html", "utf-8");
点击链接时指定是否使用系统浏览器打开
在WebView中点击链接时,默认情况下,会打开系统浏览器。可以指定某个链接是用WebView打开还是用系统浏览器打开。
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if(Uri.parse(url).getHost().equals("www.baidu.com"))
{
// 将特定的链接用WebView打开
return false;
}
// 其他链接用系统浏览器打开
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
});
点击“Back”键回退打开的网页
点击“Back”键时,默认情况下,会关掉整个浏览器。如果不希望关闭整个浏览器,而是回退已打开的网页,那么需要在当前Activity中处理并消费掉该Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return false;
}