之前使用原生的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);