WebView解析之设置

        WebView是用来展示网页的,使得网页能在Activity中显示。WebView是基于WebKit的,因此包含了前进,后退,历史,放大,缩小等功能。我们在使用WebView的过程中,常用的是哪些设置呢?

        1.防跳转到外部浏览器设置

        2.进度条等控制

        3.JS注入

        4.离线缓存

       首先,我们先来了解两个方法,setWebViewClient()和setWebChrome();


a. setWebViewClient() : 主要用来控制和检测网页的加载状况。

  

public boolean  shouldOverrideUrlLoading (WebView view, String url) 

    当一个ur将要加载,会调用这个方法。如果WebView没有设置WebViewClient,则由ActivityManager选择可以处理url的程序进行响应;如果WebView设置了WebViewClient,则需要看返回值,返回true,表示由当前应用程序自行处理,如果返回false,则由当前webView进行加载。这个方法返回默认是false,即由WebView进行网页加载。       

    其他需要了解的,网页开始加载,正在加载资源,加载完成等方法通知。

通过这个方法,我们可以了解到,只要WebView设置了setWebViewClient(),当前应用程序加载url就不会跳转到外部浏览器。


 

b.setWebChromeClient();需要更丰富的处理效果,比如JS、进度条等。因此我们需要这些效果时,需要重写WebChromeClient()的方法,比如:

   

public void onProgressChanged(WebView view, int newProgress) {}

      这个方法是WebChromeClient通知应用程序当前加载的进度,通过这个,我们可以设置自己的进度条加载进度。


      这样,我们就解决1、2两个问题。


   c.JS注入。

     

 mWebSettings.setJavaScriptEnabled(true);

 mWebView.addJavascriptInterface(new Object(), "name");

将Object对象,注入到Web页面中,使得Web中的Js可以操作这个对象。Window.name.function();


   d.离线缓存

     h5可以进行离线缓存,但是WebView如何设置,才能使得WebView支持H5的离线缓存呢?请参考下面的代码

webseting.setDomStorageEnabled(true); 
webseting.setAppCacheMaxSize(1024*1024*8);//设置缓冲大小
String appCacheDir = this.getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath(); 
webseting.setAppCachePath(appCacheDir); 
webseting.setAllowFileAccess(true); 
webseting.setAppCacheEnabled(true); 
webseting.setCacheMode(WebSettings.LOAD_DEFAULT); 


   以上是WebView的常用介绍

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值