webview的兩個方法:setWebChromeClient和setWebClient
阿新 • • 發佈:2019-01-11
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/");