用户登录
用户注册

分享至

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

  • 作者: 压力山大3702532
  • 来源: 51数据库
  • 2021-10-18

在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 "+ 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 >刷新</a>
</body>

</html>

软件
前端设计
程序设计
Java相关