android webview用法小結1

將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 truereturn 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消失

效果圖





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章