Android WebView 詳解

在Android手機中內置了一款高性能webkit內核瀏覽器,在SDK中封裝爲一個叫做WebView組件WebView在開發過程中應該注意幾點:     1.AndroidManifest.xml中必須使用許可"android.permission.INTERNET",否則會出Web page not available錯誤。    2.如果訪問的頁面中有Javascript,則webview必須設置支持Javascript。
      WebSettings webSetting = webview.getSettings();        webSetting.setJavaScriptEnabled(true);      3.如果頁面中鏈接,如果希望點擊鏈接繼續在當前browser中響應,而不是新開Android的系統browser中響應該鏈接,必須覆蓋 webview的WebViewClient對象。
 
mWebView.setWebViewClient(new WebViewClient(){      
        public boolean shouldOverrideUrlLoading(WebView view, String url) {      
                        view.loadUrl(url);      
                        return true;      
        }      
});  
 4.如果不做任何處理,瀏覽網頁,點擊系統“Back”鍵,整個Browser會調用finish()而結束自身,如果希望瀏覽的網 頁回退而不是推出瀏覽器,需要在當前Activity中處理並消費掉該Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) {      
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {      
            mWebView.goBack();      
                   return true;      
        }      
        return super.onKeyDown(keyCode, event);      
    }
 5.如果webView中需要用戶手動輸入用戶名、密碼或其他,則webview必須設置支持獲取手勢焦點。
  webview.requestFocusFromTouch();
 6.WebView 加載界面主要調用三個方法:LoadUrl、LoadData、LoadDataWithBaseURL.  1、LoadUrl            直接加載網頁、圖片並顯示.(本地或是網絡上的網頁、圖片、gif)  2、LoadData           顯示文字與圖片內容 (模擬器1.5、1.6)  3、LoadDataWithBase  顯示文字與圖片內容(支持多個模擬器版本)

WebSettings 的常用方法介紹
 setJavaScriptEnabled(true);
          //支持js腳步
 setPluginsEnabled(true);
          //支持插件
 setUseWideViewPort(false);
         //將圖片調整到適合webview的大小
 setSupportZoom(true);
         //支持縮放
 setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
            //支持內容從新佈局
 supportMultipleWindows();
        //多窗口
 setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        //關閉webview中緩存
 setAllowFileAccess(true);
        //設置可以訪問文件
 setNeedInitialFocus(true);
        //當webview調用requestFocus時爲webview設置節點     webSettings.setBuiltInZoomControls(true);
        //設置支持縮放
 setJavaScriptCanOpenWindowsAutomatically(true);
           //支持通過JS打開新窗口
 setLoadsImagesAutomatically(true);
           //支持自動加載圖片
WebViewClient 的方法全解
doUpdateVisitedHistory(WebView view, String url, boolean isReload)
         (更新歷史記錄)
onFormResubmission(WebView view, Message dontResend, Message resend)
         (應用程序重新請求網頁數據)
onLoadResource(WebView view, String url)
            在加載頁面資源時會調用,每一個資源(比如圖片)的加載都會調用一次。
onPageStarted(WebView view, String url, Bitmap favicon)
           這個事件就是開始載入頁面調用的,通常我們可以在這設定一個loading的頁面,告
        訴用戶程序在等待網絡響應。
onPageFinished(WebView view, String url)
           在頁面加載結束時調用。同樣道理,我們知道一個頁面載入完成,於是我們可以關
       閉loading 條,切換程序動作。
onReceivedError(WebView view, int errorCode, String description, String failingUrl)
       (報告錯誤信息)
onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,
       String realm)(獲取返回信息授權請求)
onReceivedSslError(WebView view, SslErrorHandler handler, SslError error)
       重寫此方法可以讓webview處理https請求。
onScaleChanged(WebView view, float oldScale, float newScale)
        (WebView發生改變時調用)
onUnhandledKeyEvent(WebView view, KeyEvent event)
      (Key事件未被加載時調用)
shouldOverrideKeyEvent(WebView view, KeyEvent event)
       重寫此方法才能夠處理在瀏覽器中的按鍵事件。
shouldOverrideUrlLoading(WebView view, String url)
        在點擊請求的是鏈接是纔會調用,重寫此方法返回true表明點擊網頁裏面的鏈接還是在當前的webview裏跳轉,不跳到瀏覽器那邊。這個函數我們可以做很多操作,比如我們讀取到某些特殊的URL,於是就可以不打開地址,取消這個操作,進行預先定義的其他操作,這對一個程序是非常必要的。

 

發佈了17 篇原創文章 · 獲贊 8 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章