摘要:本文提出了一种基于模板技术的brew应用程序可视化用户界面设计以及代码自动生成的方法,从而改变了手工编写brew应用的现状。本系统为提供一个可视化的图形界面设计工具,开发人员可以进行所见即所得的界面设计,同时根据用户的设计生成xml文件,接下来利用该xml文件及brew程序框架模板自动生成应用代码。可视化的界面设计及自动代码生成提高brew应用的开发效率。
关键词:模板;自动代码生成;可视化
1 引言
随着时代的发展,手机用户群体越来越大,人们对手机应用软件的需求也随之增大。2008年我国电信行业重组、以及3g牌照的发放,标志这3g时代的到来。手机应用程序的开发面临着更为巨大的市场。快速变化的市场要求开发人员能够快速开发出丰富多彩的应用程序。以往brew应用程序的开发仍然处于手工编写的状态。当开发人员开发应用的界面部分时,需要在编辑环境中将代码写好,经过编译链接后在模拟器中执行以观察界面实际效果,如若不满意,需要再回来修改源代码,如此反复,效率非常低下。
可视化的开发环境在目前已经较为普遍,但在brew应用开发中还属空白。本文提出一个可视化用户界面设计及基于模板的代码自动生成的方法。在可视化的图形用户界面设计环境中,开发人员可以为自己的应用程序设定一个图形手机屏幕进行界面设计。我们将brew中主要界面接口进行封装,以界面元素控件的形式提供给用户。用户可以通过鼠标拖拽将各种图形界面元素控件添加到手机屏幕的相应位置,通过调整达到理想的效果,同时在该环境中对个控件的相关属性进行设置,完成“所见即所得”的界面设计。Www.133229.coM
在完成可视化的、所见即所得的界面设计后,系统根据用户设计的结果生成一个xml文件。该xml文件记录的用户所设计界面的各种参数。接下来根据xml文件及brew应用程序模板文件自动生成brew应用框架代码。用户即开发人员可以在生成的代码上进行进一步的完善,得到最优的代码。
2 系统总体设计
本系统包括一个可视化的用户界面设计工具和一个代码自动生成引擎。如图1所示。
brew应用的代码有其自身特点,其代码的自动生成是由代码自动生成引擎根据brew应用程序框架模板文件和用于描述界面信息的xml文件进行的。其中brew应用程序框架模板文件是事先根据brew应用代码的特点设计而成的xml文件;用户通过使用一个可视化的用户界面设计工具对用户界面进行设计,该工具包括各种界面控件,用户通过鼠标拖拽对界面布局进行设计并对空间属性进行设置。该图形设计工具最终生成一个xml文件,该文件描述了用户界面的各种信息。
代码自动生成引擎根据xml文件的信息在brew应用程序框架模板文件中搜索相应的标签,并根据界面控件的属性在模板文件中添加相应代码,从而生成brew程序。
3 brew应用的可视化界面设计及代码自动生成
3.1 图形界面控件的封装及可视化设计环境
目前brew应用的用户界面设计仍然是手工编写代码的方式,编程人员需要多次运行修改才能达到满意的效果,效率十分低。
本文开发一个包含有界面设计环境及多种图形界面控件的可视化界面设计工具。利用该工具,开发人员可以为自己的应用程序创建一个图形手机屏幕,并可以通过鼠标拖拽将各种图形界面元素添加到手机屏幕的相应位置,进行“所见即所得”的界面设计。
该工具实现的关键是将brew中相关接口进行抽象并封装为图形界面元素控件。例如将brew中的iimage接口封装为图片控件,将itextctl控件封装为文本框控件等等。当用户将该控件拖拽到屏幕区域并进行调整时,需要记录下该控件对应接口的各种表象属性参数,如x、y坐标,宽、高等。此外,对于控件对应接口的其他属性需要用户进行设置。
本系统中的可视化界面设计工具可以使人们从从繁琐的界面设计编码工作中解脱出来,从而将主要精力放在应用程序业务逻辑的设计与实现上,从而提高了开发效率。
3.2 用户界面xml文件
可视化界面设计工具根据用户的设计要生成一个xml文件,该文件记录了程序界面的各种设计信息,是自动代码生成中数据来源之一,代码自动生成引擎根据该文件及程序模板生成最终代码。在这里,用户界面信息是以xml文件的格式保存用户在向导中输入的信息。之所以采用xml文件的格式保存用户输入的信息,是由xml文件的特点决定的。xml是被设计用来存储数据、携带数据和交换数据,并且xml可以从多种类型的数据存储方式中分离数据。
xml数据定义文件中的标签名为待替换的参数,也是模板文件中的特殊的标签,标签值为用户输入的信息,用于代替模板中的待替换的参数。
在本文中,用户界面xml中定义了每一种界面元素的名称、类型、所属窗口、尺寸、坐标等等信息。例如:
3.4 brew应用代码自动生成引擎
代码自动生成引擎用于解析xml定义文件和读取指定的模板文件,并将定义文件中解析得来的数据信息,在引擎中进行保存,然后对模板文档中的标记及变量进行匹配及替换,从而产生源代码输出。根据上面的流程将引擎的设计分成三个步骤:
● 解析xml数据文件,读取其中相关的信息;
● 解析模板文件,找到要添加代码的位置并添加代码;
● 根据需要,对已替换的模板进行总体的调整。
例如引擎对用户界面xml文件分析得知在窗口上设计了一个图片,引擎将在程序模板的结构体初始化部分生成图片实例指针的定义:
iimage*piimage_pic1;
在初始化函数中生成图片接口示例代码:
pme->piimage_pic1 = ishell_loadimage (pme->pishell, “/pic/test1.jpg”);
在事件处理函数的evt_app_start事件中生成加载图片的代码:
iimage_draw(pme->piimage_pic1,picx,picy);
在终了函数中生成释放图片实例的代码:
if(pme->piimage_pic1 != null)
{
iimage_release(pme->piimage_pic1);
pme->piimage_pic1=null;
}
4 结束语
本文提出了一种基于xml模板的brew代码自动生成技术。在本系统中,通过对brew接口的封装,为brew手机应用开发提供一个可视化的设计环境。利用该系统,开发人员可以进行“所见即所得”的应用程序界面设计,并根据brew程序框架模板生成相应的源代码。该系统可使brew应用开发由过去的手工书写源代码变为可视化设计、源代码自动生成,促进brew应用开发的标准化和工业化,大幅度提高开发效率。
参考文献
[1]r.j.sanchez. cdma digital cellular overview and field trials results[j].ieee mtt-s international topical symposium,1995.
[2]attar r, ghosh d, lott c ,et al. evolution of cdma2000 cellular networks: multicarrier[j]. ev-do.ieee communications magazine,0163-6804/06,2006(3):46.
[3]李贺,尹国强,蒋亮.brew技术开发与应用[m].北京:机械工业出版社,2006.
[4]郭金发,张龙.短信与brew开发技术及实践[m].西安:西安电子科技大学出版社,2005.
[5]卜佳俊,张海翔,陈天洲.深入brew手机游戏开发[m].北京:清华大学出版社,2004.