前言:现在大多数APP中都会涉及到和web交互的地方,当然我这次写的不是怎么和web交互,而是加载webview的时候我们可以做的一些事。
开始:
一、首先来说说我们在加载webview的时候怎么加载一个进度条,就是进度条读完再显示内容。
我在项目中用的方法是用progressbar实现的。
方法:1,在布局中定义progressbar(很简单...)
2,在代码中声明一下(also简单)
3,用的是webview的一个方法。
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
//加载到百分百让进度条隐藏
} else {
//没加载完就显示
}
}
})
ok,这个效果很简单就能实现,当然也可以改成过度动画。下面来说说,如果说我们要在webview加载失败的时候做一些事情需要怎么处理呢?
二,加载webview失败的时候需要有个界面展示,提示用户。
方法:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
//6.0以下执行
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
//6.0以上执行
}
});
当网页加载失败的时候会执行onReceivedError方法,我们就在这个方法里面操作我们想要实现的功能就可以了。
好了,这样做完之后没什么问题,但是webview加载失败的时候有个默认的404NotFound界面,于是在网上找到了一个很好的解决方法,如下:
view.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
只需要写在onReceivedError方法里就可以,一行代码搞定。
到这里我们想要实现的基本功能完成了~