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的常用介绍

 

你可能感兴趣的:(android,webView)