Android 程式開發:(十六)其他視圖 —— 16.2 WebView

來源:互聯網
上載者:User

WebView能夠讓你在activity中去內嵌一個web瀏覽器。如果你的應用需要內嵌一些web內容的話,這是非常有用的。
 
下面展示如何在activity中通過編碼的方式去載入網頁中的內容。
 
1. 建立一個工程,WebView。
 
2. main.xml中的代碼。
 
[html] 
<?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/webview1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" /> 
 
</LinearLayout> 
3. WebViewActivity.java中的代碼。
[java] 
public class WebViewActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        WebView wv = (WebView) findViewById(R.id.webview1); 
                 
        WebSettings webSettings = wv.getSettings(); 
        webSettings.setBuiltInZoomControls(true); 
         
        wv.loadUrl( 
            "http://chart.apis.google.com/chart" + 
            "?chs=300x225" + 
            "&cht=v" + 
            "&chco=FF6342,ADDE63,63C6DE" + 
            "&chd=t:100,80,60,30,30,30,10" + 
            "&chdl=A|B|C"); 
 

4. 在AndroidManifest.xml中添加訪問網路的許可權。
[html] 
<uses-permission android:name="android.permission.INTERNET"/> 
5. 按F11在模擬器上面調試。
 
 
 
 
想要使用WebView去載入一個網頁的話,就需要使用loadUrl()方法,並傳入URL參數,就象這樣:
 
[java] 
wv.loadUrl( 
            "http://chart.apis.google.com/chart" + 
            "?chs=300x225" + 
            "&cht=v" + 
            "&chco=FF6342,ADDE63,63C6DE" + 
            "&chd=t:100,80,60,30,30,30,10" + 
            "&chdl=A|B|C"); 
如果想要顯示內建的放大或縮小控制項,你需要從WebView中擷取WebSettings屬性對象,然後調用setBuildInZoomControls()方法:
[java] 
WebSettings webSettings = wv.getSettings(); 
webSettings.setBuiltInZoomControls(true); 
 
 
 
有的時候當你載入一個網頁,這個網頁會指向www.google.com,WebView將會去調用裝置的Browser瀏覽器去載入所指向的網址。注意中,螢幕上方的URL條,此時已經調用了本地的Browser瀏覽器應用。
 
 
 
如果想阻止調用系統本身的瀏覽器,需要去實現WebViewClient類,然後重寫shouldOverrideUrlLoading()方法。下面是例子:
 
[java] 
public class WebViewActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        WebView wv = (WebView) findViewById(R.id.webview1); 
                 
        WebSettings webSettings = wv.getSettings(); 
        webSettings.setBuiltInZoomControls(true); 
 
        wv.setWebViewClient(new Callback()); 
        wv.loadUrl("http://www.wrox.com"); 
 
    } 
     
    private class Callback extends WebViewClient { 
        @Override 
        public boolean shouldOverrideUrlLoading(WebView view, String url) { 
            return(false); 
        } 
    } 
 

 
這一次,就直接在WebView中載入指定的網址了。
 
 
 
另外,也可以動態地去實現一個HTML字串,然後把它載入到WebView中,這要使用loadDataWithBaseURL()方法:
 
[java] 
WebView wv = (WebView) findViewById(R.id.webview1); 
      final String mimeType = "text/html"; 
      final String encoding = "UTF-8"; 
      String html = "<H1>A simple HTML page</H1><body>" + 
          "<p>The quick brown fox jumps over the lazy dog</p></body>"; 
      wv.loadDataWithBaseURL("", html, mimeType, encoding, ""); 
 
 
 
同樣的,如果在assets檔案夾下面有一個HTML檔案,也可以使用loadUrl()方法去把它載入到WebView中:
 
[java]
WebView wv = (WebView) findViewById(R.id.webview1); 
wv.loadUrl("file:///android_asset/Index.html"); 
 
載入html檔案後的WebView:
 
 
 
 
 
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.