相信UI設計是很多人頭疼的問題,今天看了一個視訊是通過webview+html 設計UI界面,想了一想可以将jquery整合進去(我以前是學做網站的,jquery可以實作很多效果)是以做了個demo,我這個demo隻是實驗下我的猜想是否可行,不是真正的ui設計,是以更多的是效果的實作界面挺難看的
。 (demo在附件中)
先上圖:
關鍵代碼(demo在附件中):
---------------------------------------------activity
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view = (WebView)findViewById(R.id.wbShwo);
view.getSettings().setJavaScriptEnabled(true);
view.getSettings().setCacheMode(0);
// 注冊javascript對象
view.addJavascriptInterface(new JavaScriptMake(view,this),"jsMake");
}
-----------------------------------------javascript與java互動類
package com.my;
import org.apache.commons.logging.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.webkit.WebView;
import android.widget.Toast;
public class JavaScriptMake {
private WebView view;
private Activity activity ;
public JavaScriptMake(WebView view,Activity activity) {
this.view = view;
this.activity= activity;
}
/**
* java 将資料傳給js 通過loadUrl()調用 js方法
*/
public void javaToJs()
{
view.loadUrl("javascript:iniData('"+inidata()+"')");
* js 将資料傳給 java 通過WebView 的addJavascriptInterface()方法 映射一個對象 然後再js中通過javascript:對象.方法(參數)的方式調用
* @param s
public void jsTojava(String s)
Toast.makeText(activity,s,Toast.LENGTH_SHORT).show();
* 初始化資料
* @return
public String inidata() {
try {
//封裝json對象
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "zhangsan");
jsonObject.put("sex", "男");
jsonObject.put("age","16");
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("name", "lisi");
jsonObject1.put("sex", "男");
jsonObject1.put("age","25");
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("name", "wangwu");
jsonObject2.put("sex", "男");
jsonObject2.put("age","26");
JSONArray array = new JSONArray();
array.put(jsonObject);
array.put(jsonObject1);
array.put(jsonObject2);
android.util.Log.d("log",array.toString());
return array.toString();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}