WebView解析

WebView解析html

 


WebView是一個基於Webkit的,至關於內置瀏覽器的強大功能的組件,WebView的使用這麼分四步說明:添加組件,加載資源,屬性設置,輔助功能。android

1、WebView的添加同絕大多數控件同樣,主要有兩種添加方式:第一,相似於普通控件的定義,先在xml文件裏添加webview控件,再經過findViewById()得到;第二種方式以下:web

WebView  webView = new WebView(this);瀏覽器

setContentView(webView);緩存

 


2、WebView資源的加載主要有兩種網絡

網頁的加載:webView,loadUrl("http://www.hzeduask.com");    //這裏是所有域名ide

本地文件的加載:webView.loadUrl("file:///android_asset/aaa.html"); 文件放在目錄下assets文件夾下,也能夠加載sd卡本地html文件(file://不能少)字體

 


3、WebView屬性設置網站

    

                // 訪問頁面中有JavaScript,必須設置支持JavaScriptui

   webView.getSettings().setJavaScriptEnabled(true);

   // 啓用WebView訪問文件數據

   webView.getSettings().setAllowFileAccess(true);

   // 設置支持縮放

   webView.getSettings().setSupportZoom(true);

   webView.getSettings().setBuiltInZoomControls(true);

   // 設置縮放比例

   webView.setInitialScale(35);

   // 設置是否顯示網絡圖像---true,封鎖網絡圖片,不顯示     false----容許顯示網絡圖片

   webView.getSettings().setBlockNetworkImage(false);

   // 設置支持插件

   webView.getSettings().setPluginsEnabled(true);

   // 將圖片調整到適合WebView大小

   webView.getSettings().setUseWideViewPort(true);

   // 支持多窗口

   webView.getSettings().supportMultipleWindows();

   // 設置自動加載圖片

   webView.getSettings().setLoadsImagesAutomatically(true);

   // 設置渲染優先級

   webView.getSettings().setRenderPriority(RenderPriority.HIGH);

   // 設置默認字體大小

   webView.getSettings().setDefaultFontSize(50);

   // 若是須要用戶輸入帳號密碼,必須設置支持手勢焦點

   webView.requestFocusFromTouch();

   // 取消滾動條

   webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);     

 

 

 


    WebView緩存設置 setCacheMode()設置緩存模式,參數

    WebSettings.LOAD_CACHE_ELSE_NETWORK---只要本地有,不管是否過時,都使用緩存數據;只要打開過一次就使用緩存數據

    WebSettings.LOAD_CACHE_ONLY---只使用緩存

    WebSettings。LOAD_NO_CACHE---不使用緩存

    WebSettings.LOAD_DEFAULT---控制器決定是否從網絡獲取數據,不管若是都從網絡獲取數據,沒有網絡就報錯

    WebSettings.LOAD_NORMAL---同默認

   // 設置緩存模式

   webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);

   // 啓用緩存

   webView.getSettings().setAppCacheEnabled(true);

   // 設置最大緩存容量---100M

   webView.getSettings().setAppCacheMaxSize(1024 * 1024 * 100);

 


4、輔助方法的添加

         一、WebViewClient主要爲WebView處理各類通知、請求事件。setWebViewClient()該方法做用於點擊連接時調用,點擊跳轉時,加載新的webview資源,並能夠在加載先後添加操做,好比添加緩衝對話             框,該方法的做用使得點擊連接的響應在WebView內執行,而不是手機瀏覽器。

              webView.setWebViewClient(new WebViewClient() {

                             //用於加載新WebView,返回true表明着用完就消費掉

    @Override

    public boolean shouldOverrideUrlLoading(WebView view, String url) {

     view.loadUrl(url);

     return true;

    }

                          //用於加載新Webview以前,通常在此加載緩衝區

    @Override

    public void onPageStarted(WebView view, String url, Bitmap favicon) {

     super.onPageStarted(view, url, favicon);

 


     showDialog(1);

    }

                           //用於加載新Webview以後,通常在此消除緩衝區

   @Override

    public void onPageFinished(WebView view, String url) {

     super.onPageFinished(view, url);

 


     removeDialog(1);

    }

                          //加載錯誤時調用,通常提示錯誤信息

    @Override

    public void onReceivedError(WebView view, int errorCode,

      String description, String failingUrl) {

     super.onReceivedError(view, errorCode, description, failingUrl);

 


     Toast.makeText(WebViewDemo.this, "頁面加載錯誤...",

       Toast.LENGTH_SHORT).show();

    }

 


   });

        2.WebChromeClient主要輔助WebView處理Javascript的對話框、網站圖標、網站title、加載進度等

           webView.setWebChromeClient(new WebChromeClient(){

   

                     //打開新WebView時,設置加載進度,進度顯示於最上方標題位置  

    @Override

    public void onProgressChanged(WebView view, int newProgress) {

     super.onProgressChanged(view, newProgress);

     WebViewDemo.this.setProgress(newProgress*100);

    }

    //設置新WebView的標題,顯示於最上方標題位置

    @Override

    public void onReceivedTitle(WebView view, String title) {

     super.onReceivedTitle(view, title);

     WebViewDemo.this.setTitle(title);

    }

    //建立新WebView,加載新資源,並設置

    @Override

    public boolean onCreateWindow(WebView view, boolean isDialog,

      boolean isUserGesture, Message resultMsg) {

     WebView child=new WebView(WebViewDemo.this);

     child.getSettings().setJavaScriptEnabled(true);

     child.getSettings().setAllowFileAccess(true);

     child.getSettings().setSupportZoom(true);

     child.getSettings().setBuiltInZoomControls(true);

     child.setInitialScale(35);

     child.getSettings().setBlockNetworkImage(true);

     child.getSettings().setPluginsEnabled(true);

     child.getSettings().setUseWideViewPort(true);

     child.getSettings().supportMultipleWindows();

     child.getSettings().setLoadsImagesAutomatically(true);

     child.getSettings().setLoadWithOverviewMode(true);

     //經過WebViewTransport設置新WebView

     child.setWebChromeClient(this);

     WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;

     transport.setWebView(child);

     resultMsg.sendToTarget();

     return true;

    }

   

   });

 


5、注意事項

一、WebView的使用須要添加網絡權限

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

二、WebView的返回須要重寫Activity的onKeyDown方法,使得回退返回至上一級,若是不重寫,將會    徹底退出,代碼以下:

        @Override

  public boolean onKeyDown(int keyCode, KeyEvent event) {
   if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {

    webView.goBack();

    return true;

   }

   return super.onKeyDown(keyCode, event);

  } 

相關文章
相關標籤/搜索