Android進階2之WebView(瀏覽器)

weixin_34054866發表於2012-03-25

一 概述
WebView是一個顯示網頁的檢視。它依據於你自己的網頁瀏覽器或者只是顯示在你的Activity中的內容。
它使用了WebKit渲染引擎顯示網頁。它包括一些方法:通過瀏覽記錄向前和向後瀏覽,放大,縮小,進行文字搜尋等等。
實現內建的放大縮小使用 WebSettings.setBuiltInZoomControls(boolean)。
注意:為了使您的Activity能夠上網,在WebView載入網頁,你必須新增 INTERNET permissions 到你的 Android Manifest檔案中去。
<uses-permission android:name="android.permission.INTERNET" />
二 操作步驟:
1.在要Activity中例項化WebView元件:WebView webView = new WebView(this);
   你也可以在佈局檔案中宣告WebView,在Activity中例項化WebView。
2.呼叫WebView的loadUrl()方法,設定WevView要顯示的網頁:
   網際網路用:webView.loadUrl("http://www.baidu.com");
   本地檔案用:webView.loadUrl("file:///android_asset/XX.html"); 本地檔案存放在:assets 檔案中
3.呼叫Activity的setContentView( )方法來顯示網頁檢視
三 注意事項
在開發過程中應該注意幾點: 
    1.AndroidManifest.xml中必須新增許可權"android.permission.INTERNET"。
<uses-permission android:name="android.permission.INTERNET" />
    2.如果訪問的頁面中有Javascript,則webview必須設定支援Javascript。
       webview.getSettings().setJavaScriptEnabled(true);
    3.如果頁面中連結,如果希望點選連結繼續在當前browser中響應,而不是新開Android的系統browser中響應該連結,必須覆蓋 webview的WebViewClient物件。
  webview.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } });

      4.如果不做任何處理,瀏覽網頁,點選系統“Back”鍵,整個Browser會呼叫finish()而結束自身,如果希望瀏覽的網 頁回退而不是推出瀏覽器,需要在當前Activity中處理並消費掉該Back事件。

public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); //goBack()表示返回WebView的上一頁面 return true; } return false; }


具體實現:


package xiaosi.webview; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.webkit.WebView; import android.webkit.WebViewClient; public class MyWebViewActivity extends Activity { private WebView webview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); webview = (WebView) findViewById(R.id.webview); //設定WebView屬性,能夠執行Javascript指令碼 webview.getSettings().setJavaScriptEnabled(true); //載入需要顯示的網頁 webview.loadUrl("http://www.baidu.com/"); //設定Web檢視 webview.setWebViewClient(new HelloWebViewClient ()); } @Override //設定回退 public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); //goBack()表示返回WebView的上一頁面 return true; } return false; } //Web檢視 private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } }

main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>

相關文章