• 使用HTML做为UI


    使用LayoutUI比较麻烦,丌能让美工参不进来,这样就为开发人员带来了麻烦。但我们可以通过HTML+JS来进行UI的设计不操作。

    1).在assets添加Html页面 

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>联系人列表</title>
    <script type="text/javascript">
    function show(jsondata){
    var jsonobjs = eval(jsondata);
    var table = document.getElementById("personTable");
    for(var y=0; y<jsonobjs.length; y++){
    var tr = table.insertRow(table.rows.length); //添加一行
    //
    添加三列
    var td1 = tr.insertCell(0);
    var td2 = tr.insertCell(1);
    td2.align
    = "center";
    var td3 = tr.insertCell(2);
    //设置列内容和属性
    td1.innerHTML = jsonobjs[y].id;
    td2.innerHTML
    = jsonobjs[y].name;
    td3.innerHTML
    = "<a href='javascript:itcast.call(\""+ jsonobjs[y].phone +"\")'>"+ jsonobjs[y].phone+
    "</a>";
    }
    }
    </script>
    </head>
    <body>
    <body bgcolor="#000000" text="#FFFFFF" style="margin:0 0 0 0" onload="javascript:itcast.getContacts()">
    <table border="0" width="100%" id="personTable" cellspacing="0">
    <tr>
    <td width="15%">编号</td><td align="center">姓名</td><td width="15%">电话</td>
    </tr>
    </table>

    </body>
    </html>


    2).在main.xlm中添加一个WebView控件

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation
    ="vertical"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="fill_parent"
    >
    <WebView
    android:layout_width="fill_parent"
    android:layout_height
    ="fill_parent"
    android:id
    ="@+id/webView"
    />
    </LinearLayout>

    3).Activity 类 

    package cn.itcast.html; 

    import java.util.ArrayList;
    import java.util.List;
    import org.json.JSONArray;
    import org.json.JSONObject;
    import cn.itcast.domain.Contact;
    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Handler;
    import android.util.Log;
    import android.webkit.WebView;

    public class ContactActivity extends Activity {
    private static final String TAG = "ContactActivity";
    private WebView webView;
    private Handler handler = new Handler();

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    webView = (WebView)this.findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);//设置支持javaScript
    webView.getSettings().setSaveFormData(false);//丌保存表单数据
    webView.getSettings().setSavePassword(false);//丌保存密码
    webView.getSettings().setSupportZoom(false);//丌支持页面放大功能
    //addJavascriptInterface方法中要绑定的Java对象及方法要运行在另外的线程中,丌能运行在构造他的线程中
    webView.addJavascriptInterface(new MyJavaScript(), "itcast");
    webView.loadUrl("file:///android_asset/index.html");
    }
    private final class MyJavaScript{
    public void call(final String phone){
    handler.post(new Runnable() {
    @Override
    public void run() {
    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ phone));
    startActivity(intent);
    }
    });
    }
    /**
    * 获取所有联系人
    */
    public void getContacts(){
    handler.post(new Runnable() {
    @Override
    public void run() {
    //可以通过访问SQLLite数据库得到联系人
    List<Contact> contacts = new ArrayList<Contact>();
    contacts.add(new Contact(27, "路飞", "12345"));
    contacts.add(new Contact(28, "索隆", "67890"));
    String json = buildJson(contacts);
    webView.loadUrl("javascript:show('"+ json +"')");
    }
    });
    }
    //生成Json格式的数据
    private String buildJson(List<Contact> contacts){
    try {
    JSONArray array = new JSONArray();
    for(Contact contact : contacts){
    JSONObject item = new JSONObject();
    item.put("id", contact.getId());
    item.put("name", contact.getName());
    item.put("phone", contact.getPhone());
    array.put(item);
    }
    return array.toString();
    } catch (Exception e) {
    Log.e(TAG, e.toString());
    }
    return "";
    }
    }
    }

     MyJavaScript接口实现的方法正是提供给页面中的JS代码调用的! 

  • 相关阅读:
    文件分段后,进行分片上传逻辑
    总结几个最近处理问题中使用http协议的代码
    openresty(nginx)中使用lua脚本获取请求IP地址的代码
    线上Storm的worker,executor,task参数调优篇
    async/await
    DataTables.Queryable Sample
    关闭 XXXXX 前你必须关闭所有会话框
    关于P/Invoke的闲话
    Windows 2008 Scheduled tasks result codes
    MySQL 8.0.13的使用心得
  • 原文地址:https://www.cnblogs.com/shanzei/p/2415056.html
Copyright © 2020-2023  润新知