1. 程式人生 > >WebView常用介面整理

WebView常用介面整理

webView有兩個方法 setWebChromeClient 和 setWebClient

1. setWebClient 主要是處理解析、渲染網頁等瀏覽器做的事情。

2. setWebChromeClient 主要是輔助webView處理JavaScript的對話方塊、網站圖示、網站title、載入進度等。

WebViewClient 就是幫助WebView處理各種通知、請求事件等。

一、載入資源

1.1 載入本地資源

webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("file:///android_asset/example.html");

1.2 載入網路資源
webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("http://baidu.com");

如果上面的載入不出來的話,實際使用如下:
webView.loadUrl("http://baidu.com");
webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        //返回值是true的時候控制去WebView開啟,為false呼叫系統瀏覽器或第三方瀏覽器
        view.loadUrl(url);
        return true;
    }
});
二、webSetting 的常用方法
setJavaScriptEnabled(true);  //支援js
setPluginsEnabled(true);  //支援外掛 

setLoadsImagesAutomatically(true);  //支援自動載入圖片
setUseWideViewPort(false);  //將圖片調整到適合webview的大小 
setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支援內容重新佈局  

setLoadWithOverviewMode(true); // 縮放至螢幕的大小
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
settings.setLoadWithOverviewMode(true); //自適應螢幕
settings.setMinimumFontSize(18); //設定最小的字型大小

settings.setSupportZoom(true); //支援縮放
settings.setBuiltInZoomControls(true); //支援手勢縮放
settings.setDisplayZoomControls(false); //是否顯示縮放按鈕

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); //啟動硬體加速
}

三、WebClient的的常用方法
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請求。

shouldOverrideUrlLoading(WebView view, String url) 
//在點選請求的是連結是才會呼叫,重寫此方法返回true表明點選網頁裡面的連結還是在當前的webview裡跳轉,不跳到瀏覽器那邊。這個函式我們可以做很多操作,比如我們讀取到某些特殊的URL,於是就可以不開啟地址,取消這個操作,進行預先定義的其他操作,這對一個程式是非常必要的。

四、按返回鍵時,不退出程式而是返回上一瀏覽頁面
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
        webView.goBack();//返回上一頁面
        return true;
    }
    return super.onKeyDown(keyCode, event);
}