以前做毒霸極速版、網盾客戶端都使用過網頁做界面。所以對于這種模式我是情有獨鐘,而android 中的webview組件帶的可是webkit內核,V8 腳本引擎啊,HTML5 啊,如果用這個做一些在線應用的界面,應該會是一個不錯的選擇吧。雖然android 寫界面已經很簡單了(相比5年前用Java Swing 寫GUI 的痛苦記憶),但是在線的網頁自然有在線的好處。而且HTML5 的離線存儲功能也不錯。說了一堆廢話,對不起。
首先建立工程,使用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()");// 調用腳本函數
}
});
}
}, "demo"); // 為腳本函數提供了接口 ,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()");// 調用腳本函數
}
});
}
}, "demo"); // 為腳本函數提供了接口 ,window.demo.clickOnAndroid()
mWebView.loadUrl("file:///android_asset/html/notice.html");
有幾點需要注意的地方:
(1)如果應用需要訪問上網,在 AndroidManifest.xml 中加入:
<uses-permission android:name="android.permission.INTERNET"/>
(2)代碼中android_asset 相當于 工程路徑中:assets 目錄下的資源。
(3)setJavaScriptEnabled 是設置是否允許使用javascript腳本,一定要打開。
(4)在 layout 下main.xml 中,<WebView android:id="@+id/webview" android:layout_width="fill_parent“ android:layout_height="wrap_content" />
順利的完成該demo ,該demo 中主要就兩個點:1。使用了網頁做界面,2。實現了JavaScript 與 Java 的互相調用。