將webview裏常用的東西拿出來分享下
想要webview加載頁面,只需webView.loadUrl("http://m.baidu.com");當然別忘了添加網絡權限
此時點擊網頁裏的超鏈接,會彈出多個瀏覽器選擇,但是我們想要在自己的瀏覽器打開,就需要設置WebViewClient
webView.setWebViewClient(new WebViewClient(){
}
返回鍵的處理:我們打開多個網頁後,點擊返回目的是返回上一個網頁,但是事實上會關閉當前activity,於是要對返回鍵做處理
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
webView.goBack();
return true;
} else
return super.onKeyDown(keyCode, event);
}
這裏說一下 return true和return false的區別
返回true的時候表示事件已經完整的執行完畢了,不再執行其他的回調函數,返回false表示並未完全處理完該事件還會繼續調用其他回調函數
剛纔講的是後退,那怎樣前進呢?
在前進按鈕點擊的時候執行
if(webView.canGoForward()){
webView.goForward();
}else{
Toast("已經是最後一頁了,不能再前進了");
}
在刷新按鈕點擊的時候執行
webView.reload();
在頁面加載的時候我們可能需要給用戶個友好的提示,也是在webViewClient()裏做
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if(progDlg == null || !progDlg.isShowing()){
progDlg = new ProgressDialog(ctx);
progDlg.setMessage("正在加載,請稍候。。。");
}
progDlg.show();
}
@Override
public void onPageFinished(WebView view, String url) {
progDlg.dismiss();
}
}
在頁面加載時想要知道加載進度,需要用到另一個類WebChromeClient
webView.setWebChromeClient(new WebChromeClient(){
@Override
public 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消失
效果圖