將webview裡常用的東西拿出來分享下
想要webview載入頁面,只需webView.loadUrl("http://m.baidu.com");當然別忘了添加網路許可權
此時點擊網頁裡的超連結,會彈出多個瀏覽器選擇,但是我們想要在自己的瀏覽器開啟,就需要設定WebViewClient
webView.setWebViewClient(new WebViewClient(){}
返回鍵的處理:我們開啟多個網頁後,點擊返回目的是返回上一個網頁,但是事實上會關閉當前activity,於是要對返回鍵做處理
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {webView.goBack();return true;} elsereturn super.onKeyDown(keyCode, event);}
這裡說一下 return true和return false的區別
返回true的時候表示事件已經完整的執行完畢了,不再執行其他的回呼函數,返回false表示並未完全處理完該事件還會繼續調用其他回呼函數
剛才講的是後退,那怎樣前進呢?
在前進按鈕點擊的時候執行
if(webView.canGoForward()){webView.goForward();}else{Toast("已經是最後一頁了,不能再前進了");}
在重新整理按鈕點擊的時候執行
webView.reload();
在頁面載入的時候我們可能需要給使用者個友好的提示,也是在webViewClient()裡做
webView.setWebViewClient(new WebViewClient(){@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {if(progDlg == null || !progDlg.isShowing()){progDlg = new ProgressDialog(ctx);progDlg.setMessage("正在載入,請稍候。。。");}progDlg.show();}@Overridepublic void onPageFinished(WebView view, String url) {progDlg.dismiss();}}
在頁面載入時想要知道載入進度,需要用到另一個類WebChromeClient
webView.setWebChromeClient(new WebChromeClient(){@Overridepublic void onProgressChanged(WebView view, int newProgress) {Message msg = new Message(); msg.what = 200; msg.obj = newProgress; handler.sendMessage(msg);}}
在handler裡更新進度條
private Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case 200:int progress = (Integer) msg.obj;progressBar.setProgress(progress);break;default:break;}};};
等載入完後再讓progressbar消失