WebView使用简记

一、基本使用

动态创建 WebView webview = new WebView(Context);

  xml中配置
    

二、网页加载方式


    加载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使用简记)