1. 程式人生 > >webview的兩個方法:setWebChromeClient和setWebClient

webview的兩個方法:setWebChromeClient和setWebClient

android.webkit庫聚合了webkit核心的瀏覽器功能,webview就是她的一個控制元件,可以使得網頁輕鬆的內嵌到app裡。

並且比較強大的是,還可以直接跟js相互呼叫。

webview有兩個方法:setWebChromeClient和setWebClient

setWebChromeClient主要處理解析,渲染網頁等瀏覽器做的事情

WebChromeClient是輔助WebView處理Javascript的對話方塊,網站圖示,網站title,載入進度等 

onCloseWindow(關閉WebView) 

onCreateWindow() 

onJsAlert (WebView上alert是彈不出來東西的,需要定製你的WebChromeClient處理彈出) 

onJsPrompt 

onJsConfirm 

onProgressChanged 

onReceivedIcon 

onReceivedTitle

比如可以新增進度條,使得介面更友好

webview1.setWebChromeClient(new WebChromeClient() 
        {          
            public void onProgressChanged(WebView view, int progress)   
            {   
                setProgress(progress * 100);     
                if(progress == 100){     
                    imageView1.setVisibility(View.GONE); 
                    tv1.setVisibility(View.GONE);
                    pb1.setVisibility(View.GONE);
                    fy1.setVisibility(View.GONE);
                }
            }
        }
        ); 

WebViewClient就是幫助WebView處理各種通知、請求事件的,具體來說包括: 

onLoadResource 

onPageStart 

onPageFinish 

onReceiveError 

onReceivedHttpAuthRequest 

例如:

webview1.setWebViewClient(new WebViewClient() {   
                    
	public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)   { 
		// Handle the error  
		Toast.makeText(getApplicationContext(), "網路連線失敗 ,請連線網路。", Toast.LENGTH_SHORT).show();
		} 
	boolean shouldOverrideUrlLoading(WebView view, String url) { 
		view.loadUrl(url); 
		true; 
	} 
}); //設定字符集編碼 

webview1.getSettings().setDefaultTextEncodingName("UTF-8");
webview1.loadUrl("http://www.android100.org/");