1、项目名称
AXF (ActXmlFrom Framework) 活动ANDROID页面展现框架。
2、项目概述
运用XML解析技术实现动态的ANDROID页面加载功能,让ANDROID的企业级开发变得如编写网页一样简单。它主要由XML页面,启动主ACTIVITY处理逻辑类和主页面程序组成,极大的提高ANDROID的开发效率,动态加载页面灵活方便,让客户在后台控制前端程序页面成为可能。
3、应用范围
本框架可广泛应用于金融、保险、政府、企业等项目的定制开发中,让开发变得简单,让企业实现灵活配置页面,让ANDROID项目优美展现。
4、代码示例
为了给大家一个直观的印象,先给大家看一个页面代码和生成页面后的示例。
页面代码1
生成的页面效果:1
页面代码1中添加两个标签项目2:
修改后的代码生成页面的效果:2
点击“显示JSON数据”按钮,取得当前页面填写的数据:
5、项目基础框架介绍
5.1AXF框架的组成:
1、主页面支持类,也就是ANDROID应用的第一个ACTIVITY。
2、动态XML标签页面。
3、AXF主控制类。
4、属性文件类。
5.2主页面支持类:
每一个ANDROID应用都有一个主ACTIVITY,我们在这个类中主要做以下几件事, 1、决定进入到哪一个页面,也就是下面这个变量 formNumber ,我在示例当中
把所有的页面都做了编号,然后按顺序决定到哪个页面,真正的项目当中可以按照包名和文件名来区分跳转的顺序;
extras = new Bundle();
extras.putString("nextpage", "axf" +
formNumber.getText().toString());
取得相应的文件名称后将它装入到Bundle的”nextpage”属性中。
2、设置页面组件可编辑的模式,此变量为布尔值。布尔值为真时,进入到页面
后页面组件为不可编辑状态。
extras.putBoolean("isreturn", isreturn);
3、装入初始的数据信息,AXF以JSON字符串的格式装入初始信息。其中JSON的属
性名为页面当中定义的组件名称,两者对应后当页面加载过程中AXF将数据注入到对应的页面组件。
extras.putString("jsons", jsons);
其中特别声明的一点的当JSONS中存在returnfield属性时,它的属性值为页面组件名称,所有出现有这个属性当中的页面组件名称在上面“isreturn”
的值为真时,仍然可以编辑。
String jsons = "{returnfield:AXF001|AXF002|AXF003,cardName:中国
人}";
经过以上的初始设置后可以转入到AXF主控制类中动态加载页面了。
5.3动态XML标签页面
动态XML标签页面,顾名思义是一个XML文件,AXF支持标准的W3CXML文件格式。首先大家看一个示例文件:
这是一个标准的XML文件格式,以“
首先来介绍一下动态XML标签页面的内部构成。
页面当中有三个控件,分别定义了类型,显示宽度,是否为空等信息。 2、 在AxfFirstActivity的ACTIVITY中实现第一个页面的初始信息设置和跳转
到AXF主控页面中,具体实现如下:
Intent newFormInfo = new Intent(AxfFirstActivity.this, AXFControlActivity.class);
Bundle extras = new Bundle();
// 指定下一页加载的页面名称
extras.putString("nextpage", "login");
// 初始页面数据
extras.putString("jsons", null);
// 指定是否是退件
extras.putBoolean("isreturn", false);
// 添加BUNDLE数据到主控逻辑类
newFormInfo.putExtras(extras);
// 跳转到主控逻辑类
startActivity(newFormInfo);
3、添加主控逻辑类AXFControlActivity,实现页面的设置和显示操作,具体实
现如下:
// 取得AXF对象
ActXmlActivity actxml = new ActXmlActivity(this);
Bundle bundle = getIntent().getExtras();
// 加载页面
actxml.disPlayForm(bundle);
// 加载页面
setContentView(actxml.getSv());
完成了以上代码的编写,那么我们的AXF工程的登陆页面基本上可以显示出来了,让我们看一下页面效果。
页面效果就是这样的,非常激动人心,我们只用了短短几行代码就实现了一个ANDROID的页面,并且做这个页面的技术难度要比ANDROID本身提供的页面容易得多,只要有编程经验的人很容易都能掌握AXF页面的编写方法。
8.5个人信息录入页面1
添加个人信息页面的代码比较简单,只需要把录入项目按照事先做好的模型添加进去就可以了,我们行看一下第一个个人信息页面inform1.xml的代码:
layout_height="match_parent"background="@color/WHILT"
orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical"> maxLength="10"laWidth=""txWidth="150"singleLine="true"options=""/>
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
由于它是第一个页面,所以FORM标签中不需要PASSPAGE属性,它的NEXTPAGE 属性值为inform2.xml,也就是说当点击下一页按钮时,页面会跳转到第二个页面。大家一起看一下第一个页面的效果图:
接下来是第二个页面的代码:
nextpage="inform3">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical"> maxLength="20"laWidth=""txWidth="150"singleLine="true"options=""/>
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
layout_height="match_parent"background="@color/WHILT" orientation="vertical">
第二个页面和第一个页面不同的地方在于,FORM标签的PASSPAGE属性值为inform1.xml,NEXTPAGE属性值为inform3.xml,表明在当前页面点击上一面会回到第一个页面,下一页时会跳转到新的第三个页面中,跳转的动作已经在AXF 内部实现,我们不需要写任何代码就可以实现效果,一起看一下第三个页面的效
果:
8.6实现按钮事件
示例中我们将在第二个页面中添加一个“TYPEJSON”的按钮,按钮事件中实现获取所有页面填写的数据信息的功能,那么首先我们需要在第二个XML页面中添加以下控件信息:
// 定义按钮事件
class MyOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
String json = null;
if (actxml.checkForm()) {
json = actxml.getFormToJson();
} else {
json = "带星号的为必填项,请重新输入。";
}
Toast toast = Toast.makeText(AXFControlActivity.this,
json, Toast.LENGTH_LONG);
toast.show();
}
}// 结束
主控类的onCreate方法中添加以下代码:
// 实现按钮事件
OnClickListener listener = new MyOnClickListener();
actxml.addButtListener("typejson", listener);
大家注意在代码当中添加到AXF控制类中的参数为“typejson”、listener,这两个参数告诉AXF在所有页面中叫做typejson的控件都会绑定listener事件。好的,我们最后看一下实现的效果:
下面给大家看一下完整的属性文件:
9、结束语
讲到这里呢,基本上就讲完了,有兴趣的朋友可以到后面下载工程的源代码,希望大家一起学习做优雅的ANDROID页面程序。