setWebClient與setWebChromeClient之間的區(qū)別
android.webkit庫聚合了webkit內核的瀏覽器功能,webview就是她的一個控件,可以使得網(wǎng)頁輕松的內嵌到app里。
并且比較強大的是,還可以直接跟js相互調用兴枯。
webview有兩個方法:setWebChromeClient和setWebClient
setWebChromeClient主要處理解析血淌,渲染網(wǎng)頁等瀏覽器做的事情
WebChromeClient是輔助WebView處理JavaScript的對話框矩欠,網(wǎng)站圖標,網(wǎng)站title悠夯,加載進度等
onCloseWindow(關閉WebView)
onCreateWindow()
onJsAlert (WebView上alert是彈不出來東西的癌淮,需要定制你的WebChromeClient處理彈出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle
比如可以添加進度條,使得界面更友好
webview1.setWebChromeClient(newWebChromeClient()? ? ? ? {publicvoidonProgressChanged(WebView view,intprogress)? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? 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(newWebViewClient() {publicvoidonReceivedError(WebView view,interrorCode, String description, String failingUrl)
{//Handle the error
Toast.makeText(getApplicationContext(), "網(wǎng)絡連接失敗 ,請連接網(wǎng)絡。", Toast.LENGTH_SHORT).show();
}publicbooleanshouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url);returntrue; } });//設置字符集編碼
webview1.getSettings().setDefaultTextEncodingName("UTF-8");
webview1.loadUrl("http://www.android100.org/");
原文:http://blog.csdn.net/u014552288/article/details/23078447