Web View使用介紹(一)

Web View允許你創建自己的窗口用於瀏覽網頁,甚至是開發一個自己的瀏覽器.以下是一個簡單的例子:

1.創建一個名爲HelloWebView工程.

2.打開res/layout/main.xml,插入以下內容:

<?xml version="1.0" encoding="utf-8"?>
<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>
3.打開 HelloWebView.java 文件,在這個類的開始定義WebView 對象:

WebView mWebView;

4.在onCreate方法裏面使用以下代碼:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl(http://www.google.com);
}
以上代碼初始化了WebView對象,通過getSettings方法得到了一個WebSettings 對象,通過setJavaScriptEnabled方法使WebView支持Java script,最後通過loadUrl方法來導入網頁.

5.由於應用程序需要訪問網頁,因此需要在 Android manifest 文件裏面添加合適的權限:

<uses-permission android:name="android.permission.INTERNET" />

6.同時也可以在manifest 文件裏面去掉title bar,給webview更大的可視空間

<activity android:name=".HelloGoogleMaps" android:label="@string/app_name"
     android:theme="@android:style/Theme.NoTitleBar">

7.現在運行應用程序,我們創建了一個簡單的網頁觀察器,但目前還不是一個瀏覽器,因爲當你點擊一個鏈接時,Android 默認的瀏覽器會處理瀏覽web頁面的intent,爲了讓我們的activity能夠處理自己的url請求,我們可以重寫WebViewClient 類.

8.在HelloAndroid Activity中,創建一個內部類:

private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}

9.在onCreate方法的末尾,設置HelloWebViewClient 的實例,作爲一個WebViewClient :

mWebView.setWebViewClient(new HelloWebViewClient());

這樣我們就創建了一個webview,這個webview可以處理任何通過這個webview選擇的URL,並且加載到這個webview中,shouldOverrideUrlLoading方法傳遞當前的WebView 和URL請求.

如果再次運行應用程序,新的頁面將會被加載進來,這樣會有一個缺點:無法回到之前的頁面上去,解決這個問題的辦法是處理BACK鍵,讓webview能夠返回到之前的頁面而不是退出程序.

10.爲了處理BACK鍵,我們可以重寫onKeyDown方法:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
當canGoBack方法返回true時,表明之前還有頁面被加載過,可以返回到前一加載頁面,如果爲false,則退出程序.

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