WebView的使用记录

来源:互联网 发布:科比2008奥运会数据 编辑:程序博客网 时间:2024/05/19 16:29

     最近要做一个WebView加载网页的需求,就用之前用到的WebView,将原来的代码拿过来更换了一下请求的url,打算直接用就可以了,可是url加进去之后却加载不出页面。但是在网页端和iOS端都可以加载出来,而且我换个url就可以了。这就有点尴尬了,之前的url可以,现在换一个url就不行了,但是网页和iOS都可以加载出来,所以我就认为应该是我对WebView的设置有问题。于是,我就去搜关于这个问题的解决方法,想看看之前有没有人遇到过这种情况。开始找了几个跟我出现问题差不多的解决方法,可是修改之后还是加载不出来,我就再去搜索,终于找到了问题的解决方法。

     果然,是我的WebView的设置问题,在得到WebSettings之后,需要设置一个settings.setDomStorageEnable(true),这个设置的意思是设置可以使用本地存储,在设置上这个属性之后,页面就加载成功了。

     在这里除了记录一下这个问题之外,我又将WebView的使用做了一个简单的总结,以便日后使用。

     WebView主要的三大块:

     1.WebSettings

        WebSettings的作用是对WebView进行配置和管理

        注意:使用WebView加载页面需要在AndroidManifest.xml中添加网络权限

        <uses-permission android:name="android.permission.INTERNET"/>

        1.1 如果访问的页面中要与JavaScript交互,则webview必须支持JavaScript

             webSettings.setJavaScriptEnabled(true);

        1.2 支持插件,需要设置

             webSettings.setPluginsEnabled(true);

        1.3 设置自适应屏幕,需要下面两个设置

            webSettings.setUseWideViewPort(true);//将图片调整到适合webview的大小

            webSettings.setLoadWithOverviewMode(true);//适应屏幕大小

        1.4 页面可以缩放,需要设置

            webSettings.setSupportZoom(true);

            webSettings.setBuiltInZoomControls(true);

       1.5 隐藏原生缩放控件

            webSettings.setDisplayZoomControls(false);

       1.6 不使用缓存

            webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

       1.7 可以访问文件

            webSettings.setAllowFileAccess(true);

       1.8 支持JS打开新窗口

            webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

       1.9 支持自动加载图片

            webSettings.setLoadsImagesAutomatically(true);

       1.10 设置编码格式

           webSettings.setDefaultTextEncodingName("utf-8");

       1.11 开启DOM storage API功能

           webSettings.setDomStorageEnabled(true);

       1.12 开启database storage API功能

          webSettings.setDatabaseEnabled(true);

       1.13 开启Application Cache功能

          webSettings.setAppCacheEnabled(true);         

    2.WebViewClient

       2.1 shouldOverrideUrlLoading()

       作用是打开网页时,不调用系统浏览器,而是在本WebView中显示

webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return false;
            }

};

2.2 onPageStarted()

开始载入页面的调用,可以在此时显示一个加载中的进度条

webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                pb_loading_fragment.setVisibility(View.VISIBLE);
            }

};

2.3 onPageFinished()

加载页面结束时调用,可以在此时关闭进度条的显示

wv_found.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                pb_loading_fragment.setVisibility(View.GONE);
            }
        });

     2.4 onLoadResource()

       在加载页面资源的时候调用,任何一个资源的加载都会调用,例如一张图片的加载

     webView.setWebViewClient(new WebViewClient(){
            @Override
           public boolean onLoadResource(WebView view, String url) {
         //设定加载资源的操作
         }
     });

     2.5 onReceivedError()

       在加载页面出错时会调用

     2.6 onReceivedSslError()

       处理https请求

   3.WebChromeClient

     3.1 onProgressChanged()

       获取加载进度,常用与设置进度条

     3.2 onReceivedTitle()

       获取webView页中的标题

Learning









      

原创粉丝点击