Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android應用開發教程之十六:WebView的簡單使用

Android應用開發教程之十六:WebView的簡單使用

編輯:關於android開發

  最近的項目中看產品文檔的時候,發現設計文檔中”資訊”欄目設計的圖文並茂,有聲有色,感歎之余,發覺如此的布局寫起來太煩太累了…想到了平時使用浏覽器看新聞的體驗,感覺讓服務端把資訊做成網頁,客戶端使用WebView這個組件來直接訪問頁面的方式挺不錯.

  WebView非常簡單,Android已經封裝的非常完善,寫個小例子覆蓋其間常用的幾個方法;

  新建一個安卓項目,建議使用2.3以上SDK(因為之前版本的SDK測試一直不太好使而且沒確定原因);

  首先創建個布局文件:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:orientation="vertical"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent"  
  7. >  
  8.     <WebView  
  9.         android:id="@+id/wv1"  
  10.         android:layout_width="fill_parent"  
  11.         android:layout_height="fill_parent"  
  12.         android:layout_weight="1" />  
  13.     <WebView  
  14.         android:id="@+id/wv2"  
  15.         android:layout_width="fill_parent"  
  16.         android:layout_height="fill_parent"  
  17.         android:layout_weight="1" />  
  18. </LinearLayout>  

  然後代碼中調用並設置

Java代碼
  1. import android.app.Activity ;  
  2. import android.os.Bundle ;  
  3. import android.util.Log ;  
  4. import android.view.KeyEvent ;  
  5. import android.webkit.WebSettings.LayoutAlgorithm ;  
  6. import android.webkit.WebView ;  
  7. import android.webkit.WebViewClient ;  
  8.    
  9. public class WebViewDemoActivity extends Activity {  
  10.    
  11.     private WebView m_wv1 ;  
  12.    
  13.     private WebView m_wv2 ;  
  14.    
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState) ;  
  18.         setContentView(R.layout.main) ;  
  19.         initView();  
  20.     }  
  21.    
  22.     public void initView() {  
  23.         m_wv1 = (WebView)findViewById(R.id.wv1) ;  
  24.         m_wv1.getSettings().setJavaScriptEnabled(true) ;  
  25.         m_wv1.loadUrl("http://www.xuanyusong.com") ;  
  26.         //獲取WebSettings對象,設置縮放  
  27.         m_wv1.getSettings().setUseWideViewPort(true) ;  
  28.         m_wv1.getSettings().setLoadWithOverviewMode(true) ;  
  29.         m_wv1.setWebViewClient(new WebViewClient() {  
  30.    
  31.             @Override  
  32.             public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  33.                 Log.d("訪問網址:",url) ;  
  34.                 m_wv2.loadUrl(url) ;  
  35.                 return true ;  
  36.             }  
  37.         }) ;  
  38.         m_wv2 = (WebView)findViewById(R.id.wv2) ;  
  39.         //獲取WebSettings對象,設置單列  
  40.         m_wv2.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN) ;  
  41.         m_wv2.getSettings().setJavaScriptEnabled(true) ;  
  42.         m_wv2.setWebViewClient(new WebViewClient() {  
  43.    
  44.             @Override  
  45.             public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  46.                 Log.d("訪問網址:",url) ;  
  47.                 m_wv2.loadUrl(url) ;  
  48.                 return true ;  
  49.             }  
  50.         }) ;  
  51.     }  
  52.    
  53.     @Override  
  54.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
  55.         if((keyCode==KeyEvent.KEYCODE_BACK)&&m_wv2.canGoBack()) {  
  56.             //如果可以回退  
  57.             m_wv2.goBack() ;  
  58.             return true ;  
  59.         }  
  60.         return super.onKeyDown(keyCode,event) ;  
  61.     }  
  62. }  

  最後別忘了在AndroidManifest.xml文件中添加網絡訪問權限:

XML/HTML代碼
  1. <uses-permission android:name="android.permission.INTERNET" />  

Android應用開發教程之十六:WebView的簡單使用

Android應用開發教程之十六:WebView的簡單使用

  第一個窗口中點擊鏈接會在第二個窗口中打開,點擊回退的話如果下面的WebView可以回退就會執行後退操作,如果不能則退出Activity.布局文件和代碼都可以創建WebView對象,在此使用布局直接創建,代碼創建的話構造方法有四個:

Java代碼
  1. WebView(Context context)  
  2. WebView(Context context, AttributeSet attrs)  
  3. WebView(Context context, AttributeSet attrs, int defStyle)  
  4. WebView(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing)  

  其中loadUrl方法可以讓WebView載入指定的頁面;

  如果訪問的頁面有Javascript元素,使用 setJavaScriptEnabled(true) 可設置是否支持;

  getSettings()方法可以獲得當前WebView對象的WebSettings屬性,通過這個屬性可以給WebView獲取或設置樣式,比如例中設置的縮放和單列樣式,雙擊上面WebView網頁空白處可以放大該WebView;

  通過setWebViewClient(WebViewClient webviewclient)方法可以設置WebView響應點擊的超鏈接,參數WebViewClient重寫其中的shouldOverrideUrlLoading方法,實現你想做的事情就可以了,在這裡面是可以拿到點擊鏈接的url的;例中WebView1的點擊會在WebView2中打開;

  覆蓋onKeyDown方法是為了實現下面WebView的回退功能,否則的話會直接退出當前Activity;

  還有需要注意的是,在顯示有圖片和網格的的頁面時,WebView的表現並不是很盡如人意的,這個問題大部分情況都是在服務器的頁面上動手腳,參照wap網站頁面的做法最好了.

  簡單舉例最常用的幾個方法,想要深入學習和使用的話API還有很多方法。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved