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: