WebView功能詳解

要實現的功能

(1) 將WebView加入到你的應用

(2) 使用WebView加載頁面

(3) 獲取網絡訪問權限

(4)在WebView中使用Javascript

(5)處理頁面導航

(6)後退與前進

(7)判斷頁面加載過程

(8)WebView緩存的運用


1.通過Intent調用系統瀏覽器

Uri uri = Uri.parse(url);          url爲你要鏈接的地址

Intent intent = new Intent(Intent.ACTION_VIEW,uri);

startActivity(intent);


處理頁面導航

         當用戶點擊一個WebView中的頁面的鏈接時,通常,是由默認的瀏覽器打開加載目標URL的,然而,你可以再WebView中覆蓋這一行爲,那麼鏈接就會在WebView中打開。

                 webView.setWebViewClient(new WebViewClient());

                覆蓋WebView默認通過第三方或者是系統瀏覽器打開網頁的行爲,使得網頁可以在webview中打開

在WebView中使用Javascript

         如果你想要你加載在WebView中的web頁面使用Javascript,你需要在WebView中啓用Javascript。啓用Javascript你可以通過WebView中帶有的WedSettings來啓用它。你可以通過getSettings()來獲取WebSettings的值,然後通過setJavascriptEnabled()來啓用Javascript。


我們會遇到點擊返回鍵,沒有返回上一頁,而是退出程序的結果,這樣的結果顯然不是hi我們想要的,於是我們要給webview做一個後退和前進的功能:

當你的WebView覆蓋了URL加載,它會自動生成歷史訪問記錄,你可以通過goBack()或goForward()向前或向後訪問已訪問過的站點。

//改寫物理按鍵--返回的邏輯
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {

Toast.makeText(this, mWebView.getUrl(), Toast.LENGTH_LONG).show();
if (mWebView.canGoBack()) {
mWebView.goBack(); //返回上一頁
return true;
}else {
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}


判斷頁面加載過程:

由於有些網頁可能加載緩慢,所以我們需要去判斷頁面的加載過程,製作進度條給與用戶良好的體驗效果。

mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
super.onProgressChanged(view, newProgress);
if (newProgress == 100) {
//網頁加載完畢
closeDialog();
}else {
//網頁正在加載
openDialog(newProgress);
}
}


private void openDialog(int newProgress) {
// TODO Auto-generated method stub
if (dialog == null) {
dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("正在加載。。");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(newProgress);
dialog.show();
}else {
dialog.setProgress(newProgress);
}
}


private void closeDialog() {
// TODO Auto-generated method stub
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
dialog = null;
}
}
});

那麼爲了使我們訪問過的網頁速度加快,我們可以加入緩存的功能

settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

代碼下載地址:http://download.csdn.net/detail/weimo1234/8429045

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