以前做毒霸極速版、網(wǎng)盾客戶端都使用過(guò)網(wǎng)頁(yè)做界面。所以對(duì)于這種模式我是情有獨(dú)鐘,而android 中的webview組件帶的可是webkit內(nèi)核,V8 腳本引擎啊,HTML5 啊,如果用這個(gè)做一些在線應(yīng)用的界面,應(yīng)該會(huì)是一個(gè)不錯(cuò)的選擇吧。雖然android 寫(xiě)界面已經(jīng)很簡(jiǎn)單了(相比5年前用Java Swing 寫(xiě)GUI 的痛苦記憶),但是在線的網(wǎng)頁(yè)自然有在線的好處。而且HTML5 的離線存儲(chǔ)功能也不錯(cuò)。說(shuō)了一堆廢話,對(duì)不起。
首先建立工程,使用webview 組件。
demo 代碼核心部分:
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) this.findViewById(R.id.webview);
mHandler = new Handler();
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");// 調(diào)用腳本函數(shù)
}
});
}
}, "demo"); // 為腳本函數(shù)提供了接口 ,window.demo.clickOnAndroid()
mWebView.loadUrl("file:///android_asset/html/notice.html");
setContentView(R.layout.main);
mWebView = (WebView) this.findViewById(R.id.webview);
mHandler = new Handler();
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");// 調(diào)用腳本函數(shù)
}
});
}
}, "demo"); // 為腳本函數(shù)提供了接口 ,window.demo.clickOnAndroid()
mWebView.loadUrl("file:///android_asset/html/notice.html");
有幾點(diǎn)需要注意的地方:
(1)如果應(yīng)用需要訪問(wèn)上網(wǎng),在 AndroidManifest.xml 中加入:
<uses-permission android:name="android.permission.INTERNET"/>
(2)代碼中android_asset 相當(dāng)于 工程路徑中:assets 目錄下的資源。
(3)setJavaScriptEnabled 是設(shè)置是否允許使用javascript腳本,一定要打開(kāi)。
(4)在 layout 下main.xml 中,<WebView android:id="@+id/webview" android:layout_width="fill_parent“ android:layout_height="wrap_content" />
順利的完成該demo ,該demo 中主要就兩個(gè)點(diǎn):1。使用了網(wǎng)頁(yè)做界面,2。實(shí)現(xiàn)了JavaScript 與 Java 的互相調(diào)用。