歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android:一個最簡單的WebView教程

Android:一個最簡單的WebView教程

日期:2017/3/1 10:32:13   编辑:Linux編程
WebView允許你創建自己的窗口來顯示網頁(乃至開發一個完整的浏覽器)。
在這個教程中,你可以創建一個簡單的Acitivity來顯示和導航網頁。
1、創建一個新的項目命名為HelloWebView。

2、打開 res/layout/main.xml文件並加入下面的內容:

[html]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <WebView xmlns:Android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/webview"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. />
3、現在打開HelloWebView.java文件(linc注:如果你現在用最新的ADT,那麼這個文件是
HelloWebViewActivity.java)。在類的頂部,聲明一個WebView對象:
[java]
  1. WebView mWebView;
然後把用下面的代碼完成onCreate()方法:

[java]
  1. public void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. setContentView(R.layout.main);
  4. mWebView = (WebView) findViewById(R.id.webview);
  5. mWebView.getSettings().setJavaScriptEnabled(true);
  6. mWebView.loadUrl("http://www.google.com");
  7. }

在這裡從Activity的布局中初始化了成員變量Webview;用getSettings()請求一個WebSettings對象;並用setJavaScriptEnabled(boolean)將WebView的JavaScript置成可用。最後,用loadUrl(String)加載一個初始化好的網頁。

由於本程序需要接入網絡,你要在Android manifest文件中加一個適當的權限。打開AndroidManifest.xml文件並加上如下子元素:

[html]
  1. <uses-permission android:name="android.permission.INTERNET" />
在manifast文件中,移走標題欄以給網頁更多的空間,使用"NoTitleBar"主題:

[html]
  1. <activity android:name=".HelloGoogleMaps" android:label="@string/app_name"
  2. android:theme="@android:style/Theme.NoTitleBar">
現在運行這個程序吧!

你現在已經有了最簡單的網頁顯示工具了。它現在還不是一個浏覽器呢,因為如果你點擊一個鏈接,默認的Android浏覽器處理了這個Intent來顯示一個網頁,原來這個Activity在技術上是不能夠做這些的。不用intent過濾器來顯示網頁,你可以重寫一個WebViewClient類來啟用Activity處理自己的URL請求。
在HelloAndroid Activity中,加入內部類:

[java]
  1. private class HelloWebViewClient extends WebViewClient {
  2. @Override
  3. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  4. view.loadUrl(url);
  5. return true;
  6. }
  7. }
然後在onCreate(Bundle)方法的最後,為WebViewClient設置一個HelloWebViewClient的實例:

[java]
  1. mWebView.setWebViewClient(new HelloWebViewClient());
這一行可以放在任何WebView對象初始化之後。
創建了WebViewClient就可以選擇WebView上任意URL並在同一個WebView中加載。shouldOverrideUrlLoading(WebView, String)方法傳入當前的WebView和請求的URL,它所做的事情就是在給定的view中加載URL。返回true說明這個方法已經處理了URL,這個事件就不用再傳遞了(這時,會創建一個Intent並由浏覽器程序處理)。
如果你再次運行這個程序,這個Activity會加載一個新的頁。然而你還是不能導航到前一個頁面。要如此做,你只需處理設備的BACK鍵,以使它返回到前一個頁,而不是退出程序。

[java]
  1. @Override
  2. public boolean onKeyDown(int keyCode, KeyEvent event) {
  3. if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
  4. mWebView.goBack();
  5. return true;
  6. }
  7. return super.onKeyDown(keyCode, event);
  8. }
這個onKeyDown(int, KeyEvent)回調方法將會在Activity中按鈕被按下的時候調用。KeyEvent中的條件是核對按下的鍵是BACK鍵以及WebView可以回退(它有歷史記錄)。如果條件滿足,就會調用goBack()方法在WebView歷史中回退一個步驟。返回true表明這個事件已經被處理了。如果條件不滿足,這個事件就會被回送給系統。再次運行程序。你現在可以點擊進入鏈接並能夠在頁面歷史中回退了。
當你打開程序,你將會看到如下的界面:
Copyright © Linux教程網 All Rights Reserved