之前使用原生的WebView,觉得功能好强大,但是随着渐渐的深入,发现里面门路太多了,相应的坑也太多了。后来发现在腾讯专门针对安卓自己做了一个第三方的Tbs(只有安卓sdk),专门用来替代安卓内置的WebView,可见腾讯对这货恨到何种程度了。Tbs我还没有自己试过,但是现在项目用到WebView,决定这周末还是好好总结一下web的各种用法和各种坑。到此只是开篇,周末待续。
//触摸焦点起作用
infoWebView.requestFocus();
infoWebView.requestFocusFromTouch();
settings = infoWebView.getSettings();
//设置自适应屏幕,两者合用
//将图片调整到适合webView的大小
settings.setUseWideViewPort(true);
// 缩放至屏幕的大小
settings.setLoadWithOverviewMode(true);
//支持通过JS打开新窗口
settings.setJavaScriptCanOpenWindowsAutomatically(true);
//设置是否支持缩放
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
//不显示webview缩放按钮
settings.setDisplayZoomControls(false);
//提高渲染的优先级
settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
settings.setDomStorageEnabled(true);
// 设置WebView属性,如果想让java和js交互或者本身希望js完成一定的功能请把false改为true。
settings.setJavaScriptEnabled(true);
//1.首先在WebView初始化时添加如下代码
if (Build.VERSION.SDK_INT >= 19) {
//对系统API在19以上的版本作了兼容。因为4.4以上系统在onPageFinished时再恢复图片加载时,
// 如果存在多张图片引用的是相同的src时,会只有一个image标签得到加载,因而对于这样的系统我们就先直接加载。
settings.setLoadsImagesAutomatically(true);
} else {
settings.setLoadsImagesAutomatically(false);
}
//Android WebView开启硬件加速导致屏幕花屏,在过渡期前将WebView的硬件加速临时关闭,过渡期后再开启
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
infoWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
setWebViewClent();
Intent intent = getIntent();
String title = intent.getStringExtra(ParamsData.TITLE);
url = intent.getStringExtra(ParamsData.LOOK_FILE_URL);
if (TextUtils.isEmpty(url)) {
finish();
return;
}
titleTxt.setText(title);
Logger.d("WebActivityURL = " + url);
infoWebView.loadUrl(url);