WebView显示进度条和加载失败了解一下

前言:现在大多数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方法里就可以,一行代码搞定。

到这里我们想要实现的基本功能完成了~


你可能感兴趣的:(Android学习之路代码笔记)