美文网首页
WebView使用简记

WebView使用简记

作者: 飘撇真浪子 | 来源:发表于2018-07-05 18:12 被阅读0次

    一、基本使用

    动态创建 WebView webview = new WebView(Context);
    
    
      xml中配置
        <WebView
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    

    二、网页加载方式

    
        加载url
    
        webView.loadUrl("http://www.jianshu.com/");
    
    
    
        加载本地
    
        webView.loadUrl("file:///android_asset/html/index.html");
    
    
    
        加载sd卡文件 
    
        webView.loadUrl("content://com.Android.htmlfileprovider/sdcard/kris.html");
    
    

    三、WebViewSetting(如名:WebView的设置类 设置一些 是否支持js、设置UA、 自动缩放、自适应屏幕等)

    
        获取 WebViewSetting 对象
    
        WebSettings mWebSettings = webView.getSettings();
    
    
    
        //是否支持JS
    
        mWebSettings.setJavaScriptEnabled(boolean);
    
        //支持通过js打开新的窗口
    
        mWebSettings.setJavaScriptCanOpenWindowsAutomatically(boolean);
    
        //提高渲染等级
    
        mWebSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
    
        //设置浏览器UA
    
        mWebSettings.setUserAgentString("");
    
        // 设置支持缩放
    
        mWebSettings.setBuiltInZoomControls(boolean);
    
        //自动缩放  需要与上一个方法同时使用
    
        mWebSettings.setSupportZoom(boolean);
    
        //自适应屏幕
    
        mWebSettings.setUseWideViewPort(boolean);
    
        mWebSettings.setLoadWithOverviewMode(boolean);
    
        //使用localStorage则必须打开
    
        mWebSettings.setDomStorageEnabled(boolean);
    
        // 首先阻塞图片,让图片不显示
    
        mWebSettings.setBlockNetworkImage(boolean);
    
        // 页面加载好以后,在放开图片:
    
        mWebSettings.setBlockNetworkImage(boolean);
    
        //设置同一个界面
    
        mWebSettings.setSupportMultipleWindows(boolean);
    
        //禁用网络图片
    
        mWebSettings.setBlockNetworkImage(boolean);
    
    
    
        //getLoadsImagesAutomatically返回true才有效果
    
        mWebSettings.setCacheMode(Int);
    
        一个普通网页的加载cache会被检查,内容也会被重新校验,第一次访问网页时,会存储cache到本地,设置策略可以让网页加载方式发生变化.
    
        cache模式有如下几种:
    
        LOAD_DEFAULT: 如果我们应用程序没有设置任何cachemode, 这个是默认的cache方式。 加载一张网页会检查是否有cache,如果有并且没有过期则使用本地cache,否则                                   从网络上获取。
    
        LOAD_CACHE_ELSE_NETWORK: 使用cache资源,即使过期了也使用,如果没有cache才从网络上获取。
    
        LOAD_NO_CACHE: 不使用cache 全部从网络上获取
    
        LOAD_CACHE_ONLY:  只使用cache上的内容。
    
        mWebSettings.setNeedInitialFocus(boolean);// 是否禁止webview上面控件获取焦点(黄色边框)
    
    

    四、WebViewClient

    进行页面、资源的加载回调处理
    
    
        @Override
    
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
    
            //页面开始加载时
    
            super.onPageStarted(view, url, favicon);
    
        }
    
    
    
        @Override
    
        public void onPageFinished(WebView view, String url) {
    
            //页面加载结束时
    
            super.onPageFinished(view, url);
    
        }
    
    
    
        @Override
    
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    
            super.onReceivedError(view, errorCode, description, failingUrl);
    
            // 这里进行无网络或错误处理,具体可以根据errorCode的值进行判断,
    
        }
    
    
    
        @Override
    
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
    
                super.onReceivedSslError(view, handler, error);
    
                //进行ssl处理 比如接受所有网站的证书
    
                handler.proceed();
    
            }
    
    
    
        @Override
    
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
    
            view.loadUrl(url);
    
            /**
    
            * 网页跳转:
    
            * 1.在当前的webview跳转到新连接
    
            * view.loadUrl(url);
    
            * 2.调用系统浏览器跳转到新网页
    
            * Intent i = new Intent(Intent.ACTION_VIEW);
    
            * i.setData(Uri.parse(url));
    
            * startActivity(i);
    
            */
    
            return true;
    
        }
    
    });
    
    
    
    WebResourceResponse preload(String url) {
    
    //可拦截资源文件加载  并重定向资源
    
    如重定向某js文件
    
      return new WebResourceResponse(mimeType, "UTF-8", InputStream);
    
    
    
            }
    
    

    其他的功能说明有两个比较好的文章

    1、https://blog.csdn.net/xiangzhihong8/article/details/51082541

    2、https://www.jianshu.com/p/32d48ca7d0e0

    相关文章

      网友评论

          本文标题:WebView使用简记

          本文链接:https://www.haomeiwen.com/subject/uwzpuftx.html