最近闲 了下来,决定对自己以前所学的用到的东西做个整理,以前总是用到一些东西,只是去查,去记录到自己的云笔记中。时间久了, 下次碰到了依然记不太清楚,如此反复。这段时间用WebView比较多,就先从它说起吧!
现在app都内置Web网页,大的电商(淘宝,京东等),主要是用到的就是android的WebView组件,那就来介绍它的具体使用吧。
1. 打开网页时不调用系统浏览器, 而是在本WebView中显示:
mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
2. 通过java代码调用javascript
WebSettings webSettings =mWebView .getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(newObject() {publicvoidclickOnAndroid() {
mHandler.post(newRunnable() {publicvoidrun() {
webview.loadUrl("javascript:call()");
}
});
}
},"test");
3. 按返回键时, 不退出程序而是返回上一浏览页面
publicbooleanonKeyDown(intkeyCode, KeyEvent event) {if((keyCode == KeyEvent.KEYCODE_BACK) &&mWebView.canGoBack()) {
mWebView.goBack();returntrue;
}
returnsuper.onKeyDown(keyCode, event);
}
4.WebSetting的常用设置
WebSettings webSettings =mWebView .getSettings();
webSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放webSettings.setLoadWithOverviewMode(true);
setJavaScriptEnabled(true);//支持js
setPluginsEnabled(true);//支持插件
setUseWideViewPort(false);//将图片调整到适合webview的大小
setSupportZoom(true);//支持缩放
setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);//支持内容重新布局
supportMultipleWindows();//多窗口
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//关闭webview中缓存
setAllowFileAccess(true);//设置可以访问文件
setNeedInitialFocus(true); //当webview调用requestFocus时为webview设置节点
webview webSettings.setBuiltInZoomControls(true);//设置支持缩放
setJavaScriptCanOpenWindowsAutomatically(true);//支持通过JS打开新窗口
setLoadWithOverviewMode(true); // 缩放至屏幕的大小
setLoadsImagesAutomatically(true);//支持自动加载图片
遇到一些坑和注意事项:
1.退出WebView,仍然有声音播放
解决办法,在activity 的ondestory方法中先让 WebView 加载null内容,然后移除,销毁webview
2.混淆代码后,调用js代码没反应
解决办法:混淆配置文件中keep如下
-keepattributes *Annotation*
-keepattributes *JavascriptInterface*