本章節(jié)翻譯自《Beginning-Android-4-Application-Development》,如有翻譯不當(dāng)?shù)牡胤剑凑?qǐng)指出。
原書購(gòu)買地址 http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/
WebView能夠讓你在activity中去內(nèi)嵌一個(gè)web瀏覽器。如果你的應(yīng)用需要內(nèi)嵌一些web內(nèi)容的話,這是非常有用的。
下面展示如何在activity中通過編碼的方式去加載網(wǎng)頁(yè)中的內(nèi)容。
1. 新建一個(gè)工程,WebView。
2. 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/webview1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>3. WebViewActivity.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中添加訪問網(wǎng)絡(luò)的權(quán)限。
<uses-permission android:name="android.permission.INTERNET"/>5. 按F11在模擬器上面調(diào)試。
想要使用WebView去加載一個(gè)網(wǎng)頁(yè)的話,就需要使用loadUrl()方法,并傳入U(xiǎn)RL參數(shù),就象這樣:
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");如果想要顯示內(nèi)置的放大或縮小控件,你需要從WebView中獲取WebSettings屬性對(duì)象,然后調(diào)用setBuildInZoomControls()方法:
WebSettings webSettings = wv.getSettings(); webSettings.setBuiltInZoomControls(true);

有的時(shí)候當(dāng)你加載一個(gè)網(wǎng)頁(yè),這個(gè)網(wǎng)頁(yè)會(huì)指向www.google.com,WebView將會(huì)去調(diào)用設(shè)備的Browser瀏覽器去加載所指向的網(wǎng)址。注意下圖中,屏幕上方的URL條,此時(shí)已經(jīng)調(diào)用了本地的Browser瀏覽器應(yīng)用。
如果想阻止調(diào)用系統(tǒng)本身的瀏覽器,需要去實(shí)現(xiàn)WebViewClient類,然后重寫shouldOverrideUrlLoading()方法。下面是例子:
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中加載指定的網(wǎng)址了。
另外,也可以動(dòng)態(tài)地去實(shí)現(xiàn)一個(gè)HTML字符串,然后把它載入到WebView中,這要使用loadDataWithBaseURL()方法:
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文件夾下面有一個(gè)HTML文件,也可以使用loadUrl()方法去把它加載到WebView中:
WebView wv = (WebView) findViewById(R.id.webview1); wv.loadUrl("file:///android_asset/Index.html");

加載html文件后的WebView:
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
