欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

如何在android中使用html作布局文件

程序员文章站 2022-10-09 14:11:00
在android开发中,通常使用xml格式来描述布局文件。就目前而言,熟悉android布局及美化的人员少之又少,出现了严重的断层。大部分企业,其实还是程序员自己动手布局。...

在android开发中,通常使用xml格式来描述布局文件。就目前而言,熟悉android布局及美化的人员少之又少,出现了严重的断层。大部分企业,其实还是程序员自己动手布局。这样既浪费时间和精力,也未必能达到理想的效果。但是,在企业级的android开发中,使用html页面进行布局,也有很多的优势(例如:简单,大部分开发人员及美工都熟悉,方便统一进行更新,管理)。据笔者了解,已经有不少的公司在使用这种方式进行布局开发。这也可能是一种趋势。

下面,我将给出一个实例代码,供大家学习使用html页面给android应用布局。

复制代码 代码如下:

package com.dazhuo.ui;

import java.util.list;

import org.json.jsonarray;
import org.json.jsonobject;

import com.dazhuo.domain.person;
import com.dazhuo.service.personservice;

import android.app.activity;
import android.content.intent;
import android.net.uri;
import android.os.bundle;
import android.util.log;
import android.webkit.webview;


public class mainactivity extends activity {
   private personservice service;
   private webview webview;
    @override
    public void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.main);
        service =new personservice();
        webview = (webview) this.findviewbyid(r.id.webview);//android内置浏览器对象
        webview.getsettings().setjavascriptenabled(true);//启用javascript支持
        //添加一个js交互接口,方便html布局文件中的javascript代码能与后台java代码直接交互访问
        webview.addjavascriptinterface(new personplugin() , "person");//new类名,交互访问时使用的别名
       // <body onload="javascript:person.getpersonlist()">
        webview.loadurl("file:///android_asset/index.html");//加载本地的html布局文件
        //其实可以把这个html布局文件放在公网中,这样方便随时更新维护  例如 webview.loadurl("www.xxxx.com/index.html");
    }
    //定义一个内部类,从java后台(可能是从网络,文件或者sqllite数据库) 获取list集合数据,并转换成json字符串,调用前台js代码
    private final class personplugin{
     public void getpersonlist(){
      list<person> list = service.getpersonlist();//获得list数据集合
      //将list泛型集合的数据转换为json数据格式
       try {
   jsonarray arr =new jsonarray();
   for(person person :list)
   {
    jsonobject json =new jsonobject();
    json.put("id", person.getid());
    json.put("name", person.getname());
    json.put("mobile",person.getmobile());
    arr.put(json);

   }
   string jsonstr =arr.tostring();//转换成json字符串
   webview.loadurl("javascript:show('"+ jsonstr +"')");//执行html布局文件中的javascript函数代码--
    log.i("mainactivity", jsonstr);
       } catch (exception e) {
   // todo: handle exception
  }

     }
     //打电话的方法
  public void call(string mobile){
      intent intent = new intent(intent.action_call, uri.parse("tel:"+ mobile));
      startactivity(intent);
     }
    }
}


复制代码 代码如下:

package com.dazhuo.domain;

public class person {
    private integer id;
    public integer getid() {
  return id;
 }
 public person(integer id, string name, string mobile) {
  super();
  this.id = id;
  this.name = name;
  this.mobile = mobile;
 }
 public void setid(integer id) {
  this.id = id;
 }
 public string getname() {
  return name;
 }
 public void setname(string name) {
  this.name = name;
 }
 public string getmobile() {
  return mobile;
 }
 public void setmobile(string mobile) {
  this.mobile = mobile;
 }
 private string name;
    private string mobile;
}


复制代码 代码如下:

package com.dazhuo.service;

import java.util.arraylist;
import java.util.list;

import com.dazhuo.domain.person;

public class personservice {
   public list<person> getpersonlist()
   {

    list<person> list =new arraylist<person>();
    list.add(new person(32, "aa", "13675574545"));
    list.add(new person(32, "bb", "13698874545"));
    list.add(new person(32, "cc", "13644464545"));
    list.add(new person(32, "dd", "13908978877"));
    list.add(new person(32, "ee", "15908989898"));
     return list;
   }
}


复制代码 代码如下:

<!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>insert title here</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);
          td3.align = "center";
          //设置列内容和属性
          td1.innerhtml = jsonobjs[y].id;
          td2.innerhtml = jsonobjs[y].name;
          td3.innerhtml = "<a href='javascript:person.call(\""+ jsonobjs[y].mobile+ "\")'>"+ jsonobjs[y].mobile+ "</a>";
   }
 }
</script>

</head>
<!-- js代码通过webview调用其插件中的java代码 -->
<body onload="javascript:person.getpersonlist()">
   <table border="0" width="100%" id="persontable" cellspacing="0">
  <tr>
   <td width="20%">编号</td><td width="40%" align="center">姓名</td><td align="center">电话</td>
  </tr>
 </table>
 <a href="javascript:window.location.reload()">刷新</a>
</body>

</html>