您的位置:首页 > 移动开发

Android WebView 详解(持续更新)

2017-06-16 14:28 435 查看
之前使用原生的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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: