近期,使用WebView加载url用的比较频繁,然后就封装了一下使用方法,这里纪录一下,为后期使用提供便利。我在使用的过程中,发现加载url时,会自动跳转到系统自带的浏览器进行展示。这样使得用户体验非常的糟糕,然后就在网上查找资料,做了一下处理,现在感觉使用起来还算流畅。
封装方法如下:
/**
* 加载webview
*
* @param url url地址 "http://www.taotie.666.com/Upload/insurance/保险条款.html"
*/
private void loadWebView(final String url, WebView webview) {
if (TextUtils.isEmpty(url)) {
return;
}
//支持javascript
webview.getSettings().setJavaScriptEnabled(true);
// 设置可以支持缩放
webview.getSettings().setSupportZoom(true);
// 设置出现缩放工具
webview.getSettings().setBuiltInZoomControls(true);
//扩大比例的缩放
webview.getSettings().setUseWideViewPort(true);
//自适应屏幕
webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webview.getSettings().setLoadWithOverviewMode(true);
//如果不设置WebViewClient,请求会跳转系统浏览器
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//该方法在Build.VERSION_CODES.LOLLIPOP以前有效,从Build.VERSION_CODES.LOLLIPOP起,建议使用shouldOverrideUrlLoading(WebView, WebResourceRequest)} instead
//返回false,意味着请求过程里,不管有多少次的跳转请求(即新的请求地址),均交给webView自己处理,这也是此方法的默认处理
//返回true,说明你自己想根据url,做新的跳转,比如在判断url符合条件的情况下,我想让webView加载http://ask.youkuaiyun.com/questions/178242
// if (url.toString().contains("http")) {
// view.loadUrl(url);
// return true;
// }
return false;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
//返回false,意味着请求过程里,不管有多少次的跳转请求(即新的请求地址),均交给webView自己处理,这也是此方法的默认处理
//返回true,说明你自己想根据url,做新的跳转,比如在判断url符合条件的情况下,我想让webView加载http://ask.youkuaiyun.com/questions/178242
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// if (request.getUrl().toString().contains("http")) {
// view.loadUrl(url);
// return true;
// }
// }
return false;
}
});
webview.loadUrl(url);
}
如有需要,可以直接使用上述方法进行加载。