Android中使用WebView Demo如下:
WebView wv=(WebView) findViewById(R.id.wv);
WebSettings ws = wv.getSettings();
ws.setUseWideViewPort(true);
ws.setJavaScriptEnabled(true);
ws.setSupportZoom(true); //设置可以支持缩放
ws.setDefaultZoom(WebSettings.ZoomDensity.FAR);
ws.setBuiltInZoomControls(true);//设置出现缩放工具
wv.setWebViewClient(new MyWebViewClient());//设置用WebView打开内部链接
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
//wView.loadUrl("file:///android_asset/index.html"); -----打开本包内asset目录下的index.html文件
//wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");-----打开本地sd卡内的index.html文件
//wView.loadUrl("http://wap.baidu.com");-----打开指定URL的html文件
通常情况下,设置了ws.setSupportZoom(true)和ws.setBuiltInZoomControls(true)之后,WebView中显示的网页即可以进行缩放。
但是在测试中发现,使用淘宝网的网址加载,如下:
wv.loadUrl("http://www.taobao.com");
该网页的缩放功能不生效。
一直纳闷,还以为是设置的属性不生效。查了很多资料,看了google源码,得出的结论都一样,就是设置了上面两个属性就ok了。后来抱着侥幸的心理,试了试其他的网址:
wv.loadUrl("http://www.jd.com");
没想到还真是可以缩放的。
一查资料才发现,上面的设置仅限于打开的网页支持缩放功能,支不支持缩放功能取决于html的设置。若html中设置了以下属性:
<meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1.0, user-scalable=no" />
该网页在WebView中显示的时候即是不支持缩放的。
对比了UC浏览器,其中有个强制缩放的功能。后续有时间学习一下这个强制缩放功能的实现。