我直接上代码了。简单粗暴。因为js Android 互调还没做,暂时先完成页面功能。 以下属性各取所需。
有不对的,望请告知。
/**
* 初始化 WebChromeClient*/
private void initWebChromeClient() {
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
tvTitle.setText(title);
}
@Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress != 100) { mProgressBar.setProgress(newProgress); } else { mProgressBar.setVisibility(View.GONE); } }
}
/**
* 初始化 WebViewClient
*/
private void initWebViewClient() {
webView.setWebViewClient(new WebViewClient() {
// TODO 该方法可对前端界面url进行拦截,实现源生与前端H5界面的数据互换
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Logger.d("WebViewClient_URL >>> " + url);
view.loadUrl(url);
return true;
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
// 错误链接访问错误的全局化链接
view.loadUrl("file:///android_asset/404.html");
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
//handler.cancel(); // Android默认的处理方式
//handleMessage(Message msg); // 进行其他处理
handler.proceed(); // 接受所有网站的证书
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
if (webView != null && webView.getProgress() == 100) {
progressBar.setVisibility(View.GONE);
}
}
});
}
/**
* 初始化 WebViewSetting
*各种属性
*/
@SuppressLint("SetJavaScriptEnabled")
private void initWebViewSetting() {
webView.setListener(this, this);
WebSettings mSettings = webView.getSettings();
// 支持获取手势焦点
webView.requestFocusFromTouch();
webView.setHorizontalFadingEdgeEnabled(true);
webView.setVerticalFadingEdgeEnabled(false);
webView.setVerticalScrollBarEnabled(false);
// 支持JS
mSettings.setJavaScriptEnabled(true);
mSettings.setJavaScriptCanOpenWindowsAutomatically(true);
mSettings.setBuiltInZoomControls(true);
mSettings.setDisplayZoomControls(true);
mSettings.setLoadWithOverviewMode(true);
// 支持插件
mSettings.setPluginState(WebSettings.PluginState.ON);
mSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
// 自适应屏幕
mSettings.setUseWideViewPort(true);
mSettings.setLoadWithOverviewMode(true);
// 支持缩放
mSettings.setSupportZoom(false);//就是这个属性把我搞惨了,
// 隐藏原声缩放控件
mSettings.setDisplayZoomControls(false);
// 支持内容重新布局
mSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
mSettings.supportMultipleWindows();
mSettings.setSupportMultipleWindows(true);
// 设置缓存模式
mSettings.setDomStorageEnabled(true);
mSettings.setDatabaseEnabled(true);
mSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
mSettings.setAppCacheEnabled(true);
mSettings.setAppCachePath(webView.getContext().getCacheDir().getAbsolutePath());
// 设置可访问文件
mSettings.setAllowFileAccess(true);
mSettings.setNeedInitialFocus(true);
// 支持自定加载图片
if (Build.VERSION.SDK_INT >= 19) {
mSettings.setLoadsImagesAutomatically(true);
} else {
mSettings.setLoadsImagesAutomatically(false);
}
mSettings.setNeedInitialFocus(true);
// 设定编码格式
mSettings.setDefaultTextEncodingName("UTF-8");
}