webview組件的一些方法

在Android手機中內置了一款高性能webkit內核瀏覽器,在SDK中封裝爲一個叫做WebView組件。利用WebView組件就可以做出款完全屬於自己的手機瀏覽器,就想在windows上用IE內核做一個瀏覽器一樣!

1.因爲是瀏覽器,訪問網絡是必須的。所以,AndroidManifest.xml中必須使用許可”android.permission.INTERNET”,否則會出Web page not available錯誤。

2.設置瀏覽器是否運行網頁上的javascript代碼:

WebSettings webSetting = webview.getSettings();
webSetting.setJavaScriptEnabled(true);

3.默認情況下,點擊webview中的鏈接,會使用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);
}

對於 Android 2.0 開始又多出了一種新的方法,對於 Activity 可以單獨獲取 Back 鍵的按下事件,直接重
寫onBackPressed 方法即可,代碼如下

@Override
public void onBackPressed() {
// 這裏處理邏輯代碼,該方法僅適用於 2.0 或更高版本的 sdk
return ;
}

5.如果webView中需要用戶手動輸入用戶名、密碼或其他,則webview必須設置支持獲取手勢焦點。方法如下:

webview.requestFocusFromTouch();

6.WebView加載界面主要調用三個方法:LoadUrl、LoadData、LoadDataWithBaseURL.

1、LoadUrl 直接加載網頁、圖片並顯示.(本地或是網絡上的網頁、圖片、gif)

2、LoadData 顯示文字與圖片內容 (模擬器1.5、1.6)

3、LoadDataWithBase 顯示文字與圖片內容(支持多個模擬器版本)

7.WebSettings 的常用方法介紹

1 setJavaScriptEnabled(true); //支持js腳步

2 setPluginsEnabled(true); //支持插件 目前新版本已不支持

3 setUseWideViewPort(false); //將圖片調整到適合webview的大小

4 setSupportZoom(true); //支持縮放

5 setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持內容重新佈局

6 supportMultipleWindows(); //多窗口

7 setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //關閉webview中緩存

8 setAllowFileAccess(true); //設置可以訪問文件

9 setNeedInitialFocus(true); //當webview調用requestFocus時爲webview設置節點

10 setBuiltInZoomControls(true); //設置支持縮放

11 setJavaScriptCanOpenWindowsAutomatically(true); //支持通過JS打開新窗口

12 setLoadsImagesAutomatically(true); //支持自動加載圖片

8.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,於是就可以不打開地址,取消這個操作,進行預先定義的其他操作,這對一個程序是非常必要的。

關於android WebViewClient 的方法解釋

1、public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

在點擊請求的是鏈接是纔會調用,重寫此方法返回true表明點擊網頁裏面的鏈接還是在當前的webview裏跳轉,不跳到瀏覽器那邊。

2、public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error) {
handler.proceed();
}

重寫此方法可以讓webview處理https請求。

3、public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
return super.shouldOverrideKeyEvent(view, event);
}
}

重寫此方法才能夠處理在瀏覽器中的按鍵事件。

4、 public void onLoadResource(WebView view, String url) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, ” onLoadResource “);
}
super.onLoadResource(view, url);
}

在加載頁面資源時會調用,每一個資源(比如圖片)的加載都會調用一次。

5、 public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, ” onPageStarted “);
}

if (url.endsWith(“.apk”)) {
download(url);//下載處理
}
super.onPageStarted(view, url, favicon);
}

在頁面加載開始時調用。

6、public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, ” onPageFinished “);
}
super.onPageFinished(view, url);
}

在頁面加載結束時調用。

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

onCloseWindow(關閉WebView)
onCreateWindow()
onJsAlert (WebView上alert無效,需要定製WebChromeClient處理彈出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章