CN102236544A - 一种皮肤设计方法及装置 - Google Patents
一种皮肤设计方法及装置 Download PDFInfo
- Publication number
- CN102236544A CN102236544A CN2010101519120A CN201010151912A CN102236544A CN 102236544 A CN102236544 A CN 102236544A CN 2010101519120 A CN2010101519120 A CN 2010101519120A CN 201010151912 A CN201010151912 A CN 201010151912A CN 102236544 A CN102236544 A CN 102236544A
- Authority
- CN
- China
- Prior art keywords
- skin
- file
- fragment
- segment
- skin file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种皮肤设计方法,包括以下步骤:解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数,将所述目标皮肤文件映射到对应的控件类,生成所述目标皮肤文件对应的控件对象;绘制用户交互界面的皮肤,将所述控件对象呈现在所述用户交互界面的皮肤上。本发明在皮肤系统中引入片段元素,通过对片段元素配置参数可以呈现不同的皮肤效果,实现界面的统一化和多样化,并简化了资源管理。本发明同样公开了一种应用上述方法的装置。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种皮肤设计方法及装置。
背景技术
随着计算机处理能力的提高以及交互界面不断发展,在信息高速发展、用户需求不断变化的互联网时代,以及强调丰富体验的大前提下,越来越多的软件把用户体验提到一个非常重要的高度。在软件功能丰富化的同时,界面开发部分对应的图片元素和配置信息呈指数增长,越来越多的软件都采用可定制皮肤来提升产品的交互体验。皮肤系统中通常包括一系列的图像文件和相关的配置信息,应用程序通过上述图像文件和配置信息来呈现用户界面,达到丰富的体验效果。随着界面体验需求越来越高,皮肤系统中需要管理的资源越来越多,如何统一界面风格、统一管理资源的问题日趋重要。
目前,很多客户端软件采用Windows Hook技术来实现界面公共元素的呈现,例如对话框的标题栏统一化。Windows Hook技术通过代码的方式来实现界面风格统一化和资源统一管理,是Windows提供的一种消息处理机制平台,是指在程序正常运行中接受信息之前预先启动的函数,用来检查和修改传给该程序的信息,达到实现改变默认Windows界面显示的目的。
然而,基于Windows Hook技术的皮肤引擎一般做成固定的库,以第三方的形式提供给需要的软件客户端使用。在使用过程中,必须从技术层面上了解上述皮肤引擎中的库,需要阅读冗长而复杂的技术性的文档,才可能使用在软件的界面的开发中库,缺乏灵活性,修改和维护也极度不方便,扩展性比较差,可配置性也较差。
此外,大多数皮肤引擎还引入XML(eXtensible Markup Language,扩展标记语言)来对皮肤进行描述,实现树形的多层次化的结构。例如:一个窗口对应一个XML文档,文档中根节点代表窗口,其子节点代表界面上所有的子控件。以树形结构来标识界面绘制时的重叠关系。XML是一种简单的数据存储语言,使用一系列简单的标记描述数据。虽然XML比二进制数据占用更多的空间,但是XML可以通过不同的格式化描述手段完成最终的形式表达,可以比二进制数据的表达更形象和生动。然而,在使用XML的过程中,在皮肤系统中为了引用某一类具有相同特征的皮肤元素,大量使用重复性的语句进行描述,导致皮肤编辑文档中存在大量重复语句的书写,界面上有些元素的风格会出现不统一的情况,在资源统一化管理方面有大量缺陷,即使一个小的更改,也要修改大量XML。当软件界面需要维护的资源非常庞大的时候,维护难度呈指数级增长。
发明内容
本发明提供了一种皮肤设计方法及装置,用于简化资源的维护。
本发明提供了一种皮肤设计方法,包括以下步骤:
解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数,将所述目标皮肤文件映射到对应的控件类,生成所述目标皮肤文件对应的控件对象;
绘制用户交互界面的皮肤,将所述控件对象呈现在所述用户交互界面的皮肤上。
优选地,所述目标皮肤文件包括公共资源集合和片段元素,
所述公共资源集合为皮肤系统中的基本配置信息,包含多种元公共元素;
所述片段元素为以所述元公共元素为基础的控件原型,所述片段元素提供可配置参数的接口,通过配置不同的参数实例化为不同的控件对象。
优选地,所述解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数之前,还包括:
对所述皮肤系统中表征不同的皮肤控件对象进行抽象,得到所述皮肤系统的片段元素。
优选地,所述解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数之前,还包括:
对包含所述片断元素的源皮肤文件进行预加载处理,得到所述目标皮肤文件。
优选地,所述对包含所述片断元素的源皮肤文件进行预加载处理,得到所述目标皮肤文件,具体包括:
读取所述源皮肤文件中的原始皮肤元素;
如果所述原始皮肤元素为片段元素,则根据所述片断元素的文件属性搜索所述片断元素中的参数字串,将所述参数字串替换为对应的属性值,并更新所述片段元素的缓存空间的首地址和长度;如果所述原始皮肤元素为文件元素,则更新所述文件元素的缓存空间的首地址和长度。
本发明还提供了一种皮肤设计装置,包括:
解析模块,用于解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数,将所述目标皮肤文件映射到对应的控件类,生成所述目标皮肤文件对应的控件对象;
绘制模块,用于绘制用户交互界面的皮肤,将所述解析模块生成的控件对象呈现在所述用户交互界面的皮肤上。
优选地,所述目标皮肤文件包括公共资源集合和片段元素,
所述公共资源集合为皮肤系统中的基本配置信息,包含多种元公共元素;
所述片段元素为以所述元公共元素为基础的控件原型,所述片段元素提供可配置参数的接口,通过配置不同的参数实例化为不同的控件对象。
优选地,所述的装置,还包括:
获取模块,用于对所述皮肤系统中表征不同的皮肤控件对象进行抽象,得到所述皮肤系统的片段元素,供所述解析模块使用。
优选地,所述的装置,还包括:
预处理模块,用于对包含所述获取模块得到的片断元素的源皮肤文件进行预加载处理,得到所述目标皮肤文件,供所述解析模块使用。
优选地,所述预处理模块,具体用于读取所述源皮肤文件中的原始皮肤元素;如果所述原始皮肤元素为片段元素,则根据所述片断元素的文件属性搜索所述片断元素中的参数字串,将所述参数字串替换为对应的属性值,并更新所述片段元素的缓存空间的首地址和长度;如果所述原始皮肤元素为文件元素,则更新所述文件元素的缓存空间的首地址和长度。
与现有技术相比,本发明具有以下优点:本发明在皮肤系统中引入片段元素,通过对片段元素配置参数可以呈现不同的皮肤效果,实现界面的统一化和多样化,并简化了资源管理。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对本发明或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明中的一种皮肤设计方法流程图;
图2为本发明应用场景中的皮肤设计流程图;
图3为本发明中的皮肤系统的一种对话框示意图;
图4为本发明中的皮肤系统的另一种对话框示意图;
图5为本发明中的皮肤文件的预加载处理流程图;
图6为本发明中一种皮肤设计装置结构示意图。
具体实施方式
本发明提供的技术方案中,其核心思想为将皮肤系统中大量出现的元素进行归类和抽象,在皮肤系统中引入片断元素(Fragment Element)。对于表征不同的皮肤控件对象,抽象成为各种类型的片段元素,例如:按钮、对话框标题栏、对话框底部栏、单选框、组合框、编辑框、滑动条和列表等。片段元素的引入使得皮肤系统只需要维护一份原型,在使用过程中通过配置参数就可以呈现不同的效果,只要使用简单的编辑操作变可实现界面的统一化和多样化;原型的唯一化使得资源管理大大简化,也避免了XML描述的重复化。此外,在解析片断元素的皮肤配置文档时,还可以利用预处理技术对片段元素进行预翻译,生成目标皮肤文件,加快运行时皮肤加载速度。
下面将结合本发明中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明中的一种皮肤设计方法流程图,包括以下步骤:
步骤101,解析目标皮肤文件中的片断元素以及片断元素对应的配置参数,将该目标皮肤文件映射到对应的控件类,生成该目标皮肤文件对应的控件对象。
具体地,目标皮肤文件可以包括公共资源集合和片段元素。其中,公共资源集合为皮肤系统中基本配置信息,包含多种元公共元素,元公共元素为皮肤系统中最基本的原子数据,可以是颜色、字体、文字、不规则区域和变色图片;片段元素为以公共资源集合中的元公共元素为基础的控件原型,可以包括按钮、对话框标题栏、对话框底部栏、单选框、组合框、编辑框、滑动条和列表等。片断元素可以根据皮肤系统中表征不同的皮肤控件对象抽象得到,包含多个表征不同的皮肤控件对象的公共属性。片段元素还可以提供配置参数的接口,通过配置不同的参数实例化为不同的控件对象。
解析目标皮肤文件时,可以将目标皮肤文件中的格式化信息转化为控件类数据和控件类参数,从而生成目标皮肤文件对应的控件对象。
步骤102,绘制用户交互界面的皮肤,将控件对象呈现在用户交互界面的皮肤上。
本发明在皮肤系统中引入片段元素,通过对片段元素配置参数可以呈现不同的皮肤效果,实现界面的统一化和多样化,并简化了资源管理。
由于本发明在皮肤配置文件中引入了片段元素,而片断元素中的参数字符串无法直接套用已有的解析皮肤的流程,因此,在生成控件对象之前,需要对源皮肤文件中的原始皮肤元素进行预加载处理。如果在客户端软件启动时进行预加载处理,会降低客户端软件的启动速度。由于客户端软件中可见的是含有片断元素的目标皮肤文件,因此,在系统发布皮肤文件时,可以利用外部工具生成翻译后的皮肤文件,在皮肤绘制程序运行之前完成对原始数据的解析,得到程序需要的格式化信息。
以下结合上述应用场景,对本发明中的皮肤设计方法进行详细、具体的描述。
如图2所示,为本发明应用场景中的皮肤设计流程图,具体包括以下步骤:
步骤201,对包含片断元素的源皮肤文件进行预加载处理,得到对应的目标皮肤文件。
其中,源皮肤文件为编译之前的皮肤配置文档,由XML格式的原始皮肤元素构成,该原始皮肤元素可以包括片断元素和文件元素,片断元素为包含参数字串的控件原型,而文件元素为不包含参数字串的控件原型。目标皮肤文件为编译完毕的格式化信息。预加载处理是在加载目标皮肤文件之前,根据原始皮肤元素的类型对源皮肤文件进行的翻译操作和缓存更新操作。
具体地,在预加载处理过程中,可以读取所述源皮肤文件中的原始皮肤元素;判断原始皮肤元素是否为片段元素,如果是,则根据该原始皮肤片断元素的文件属性搜索该片断元素中的参数字串,将该参数字串替换为对应的属性值,并更新该片段元素的缓存空间的首地址和长度;如果原始皮肤元素为文件元素,则更新该文件元素的缓存空间的首地址和长度。
通常情况下,皮肤系统不仅需要统一管理图像数据的存储,还需要管理界面配色信息、界面元素排放位置信息、文字信息,字体和颜色等众多相关元素的信息。本发明对大量使用的元素进行抽象,归纳生成某种特定控件的原型作为片段元素。片段元素是以元公共元素为基础而归纳生成的第二级的元素,由一些大量出现的原子元素组成,是具有特定原子属性的、可配置参数的皮肤元素。片段元素提供可配置参数的接口,当配置不同的参数的时候,可以被实例化为不同的控件对象。
以皮肤系统中大量存在的对话框为例,如图3和图4所示。每个对话框都基本具备图3和图4中所标示的控件。将对话框抽象为片段元素后,只需要在皮肤系统中维护一份原型。片段元素将共性的部分固定,将特性的部分参数化,实现可配置性。
例如,抽象出来的按钮元素的描述可以为:
<Fragment FID=″YesBtn″>
<ButtonControl OID=″%Param1%″ Align=″%Param2%″
Gaps=″%Param3%″
Cmd=″%Param4%″CmdParams=″%Param5%″BgType=″Png″
Image=″Common\BTN_BACK.PNG″ClipRegion=″True″
Text=″IDS_SKIN_MBBtnYESText″
TextColorID=″DialogContentButton″
FontID=″NormalFont″Split=″4″Width=″Bitmap″Height=″Bitmap″
ColorizeText=″True″/>
</Fragment>
其中,按钮元素的固定属性包括:背景图类型、图片切割方式、图片名字、按钮边角类型、按钮上文字、文字颜色、字体样式、按钮宽度和按钮高度。可配置属性包括:唯一的标识符ID、相对位置对齐方式、绝对坐标、触发的消息ID和消息参数。在共性的描述中,按钮元素呈现出一个“确定”按钮,可配置的参数部分为按钮元素的布局和消息实现了动态配置。基于上述策略,对话框中所有需要“确定”按钮的地方,都可以直接引用上述片段元素,并配置适当的参数。
片段元素的原型结构,如表1所示。
表1:
字段名 | 备注 |
FID | 标记片段元素的ID |
原子元素<某类控件> | 该片段元素的子元素 |
... | .... |
原子元素<某类控件> |
另外,片段元素的可参数化字段取决与其子节点原子元素所支持的属性,如表2所示。目前,一个片段元素最多可提供16个可配置的参数接口。
表2:
字段名 | 备注 |
OID | 控件元素标识符 |
Align | 绘制时对齐方式 |
Gaps | 绘制时坐标 |
Cmd | 触发消息ID |
CmdParams | 携带的消息参数 |
BgType | 背景图片类型 |
Image | 背景图片名称 |
ClipRegion | 是否需要圆角 |
Text | 文字 |
TextColorID | 文字颜色 |
FontID | 字体样式 |
Split | 图片切割方式 |
Width | 宽度 |
Height | 高度 |
ColorizeText | 文字是否变色 |
Draw | 绘制方式 |
...... |
片断元素的定义语句形式如下:
<Fragment FID=″YesBtn″>
<ButtonControl OID=″%Param1%″ Align=″%Param2%″
Gaps=″%Param3%″
Cmd=″%Param4%″ CmdParams=″%Param5%″ ClipRegion=″True″
Split=″3″
BgType=″Bitmap″ Image=″Common\BTN_BACK.BMP″
Width=″Bitmap″
Height=″Bitmap FontID=″NormalFont″″ColorizeText=″True″
Text=″IDS_SKIN_MBBtnYESText″
TextColorID=″DialogContentButton″/>
</Fragment>
在需要使用上述片段元素的地方,通常使用如下语句:
<IncludeFragment File=″Fragment.xml″FID=″YesBtn″Param1=″OKBtn″Param2=″None″Param3=″90,52,0,0″Param4=″Close″Param5=″Y″/>
在上述语句中,通过Fragement和IncludeFragment中标识符ID来匹配片断元素,通过配置的参数来确定其排放位置和触发的消息等,简化了皮肤编辑需要的语句。
基于同样的原理,本发明可以从皮肤系统中抽象出各种控件的片断元素描述,整个系统中只用维护一份控件原型,并使用该控件原型的实例化对象。而在现有技术中,通常使用XML重复化描述实现用户交互界面的统一。因此,本发明通过使用片断元素,可以实现对皮肤资源的集中管理,同时避免了大量的XML重复化描述。
步骤202,解析目标皮肤文件,将目标皮肤文件中的格式化信息转化为控件类数据和控件类参数,得到目标皮肤文件对应的控件对象。
具体地,目标皮肤文件由公共资源集合与片段元素构成,经过皮肤引擎的解析会映射到对应的控件基类和多种控件对象。其中,控件基类为不同控件对象具有的公共属性,通过配置不同的参数可以实例化为不同的控件对象,控件对象可以包括Button类对象、CkeckBox类对象、EditBox类对象和Slider类对象。
步骤203,使用控件对象绘制用户交互界面的皮肤。
具体地,在绘制用户交互界面的皮肤时,可以将Button类对象、CkeckBox类对象、EditBox类对象和Slider类对象分别呈现为皮肤中的按钮、单选框、编辑框和滑动条。
本发明在皮肤系统中引入片段元素,通过对片段元素配置参数可以呈现不同的皮肤效果,实现界面的统一化和多样化,并简化了资源管理。此外,由于在客户端软件启动之前进行原始数据的解析,随客户端软件发布的皮肤文件是已经编译好的目标皮肤文件,提升了软件启动时加载皮肤的速度,减少运行客户端软件时的时间消耗。
以下对上述应用场景中步骤201中的预加载处理进行详细、具体的描述,如图5所示,具体包括以下步骤:
步骤501,打开源皮肤文件,获取源皮肤文件的文件长度,根据该文件长度新建缓存空间。
具体地,打开源皮肤文件对应的根XML文件,并建立XML文件堆栈,将根XML文件入文件堆栈,设置根XML文件为当前XML文件。新建BUF区域,并建立BUF指针堆栈,设置新建BUF为当前BUF,并将该新建BUF入堆栈。例如,打开Root皮肤文件QPSkin.xml,获取文件长度file_length,开辟长度为file_length+1的缓存空间buf,进入源皮肤文件翻译到目标皮肤文件的过程。
步骤502,按字节读取当前XML文件,判断当前读取的字节是否为文件尾。
如果判断结果为是,则执行步骤503;否则,执行步骤505。
步骤503,判断XML文件堆栈是为空。
如果判断结果为是,则结束流程;否则,执行步骤504。
步骤504,复制当前BUF到BUF堆栈中的前一个BUF中,并将当前BUF退栈。释放当前BUF,并将堆栈中的前一个BUF设置为当前BUF。
需要说明的是,执行完本步骤后继续执行步骤502。
步骤505,判断当前字节对应的XML节点是否为Include File元素类型。
如果判断结果为是,则执行步骤506;否则,执行步骤507。
具体地,判断当前字节对应的XML节点与includefile_start_tag是否匹配,如果匹配,则该XML节点为Include File元素类型。
步骤506,对当前字节对应的XML节点执行Include File元素类型的预翻译。
具体地,在解析Include File元素的预编译阶段,缓存空间的首地址和长度均同步更新。打开Include XML文件,设置新开XML文件入XML文件堆栈,设置新开XML文件为当前XML。新开BUF区域,BUF指针去BUF堆栈,设置新开BUF为当前BUF区域。
其中,输入参数为(buf,p,length),buf为当前缓存的起始地址,p为匹配节点字符串的相对起始的偏移地址,length为当前缓存的长度。读取<Include>节点的尾部地址pTagEnd,保存传入的参数p为<Include>节点的起始地址pTagStart;读取<Include>节点的File属性,得到需要翻译的XML文件名sFullFilename,读取该文件到临时缓存pIncludeBuf,并记录sFullFilename文件长度nIncludeLen。分配长度为length_new=length-(pTagEnd-pTagStart)+nIncludeLen的新缓存,将原buf中的内容分三段拷贝到新的缓存buf_new。拷贝过程分三段将原buf中的<Include>节点替换为读取的XML文件内容。拷贝完毕后,修改传入引用参数buf为buf_new,length为length_new。
需要说明的是,执行完本步骤后,继续执行步骤502。
步骤507,判断当前字节对应的XML节点是否为Include Fragment元素类型。
如果判断结果为是,则执行步骤509;否则,执行步骤508。
具体地,判断当前字节对应的XML节点与includefragment_start_tag是否匹配,如果匹配,则该XML节点为Include Fragment元素类型。
步骤508,复制当前字节入当前BUF区域。
需要说明的是,执行完本步骤后,继续执行步骤502。
步骤509,对当前字节对应的XML节点执行Include Fragment元素类型的预翻译。
其中,输入参数为(buf,p,length),buf为当前缓存的起始地址,p为匹配节点字符串的相对起始的偏移地址,length为当前缓存的长度。读取<IncludeFragment>节点的长度,获取该节点FID属性字串include_fid,组织新的匹配字串MatchStr为<Fragment FID=\″+include_fid+\″,打开该节点File属性对应的文件,搜索字符串MatchStr,若没有搜索到,返回错误;若搜索到,则拷贝该片段下内容到临时缓存,在临时缓存中搜索出现%Paramx%(x=0,1,...A,...F)的参数字串,将该参数字串替换为片段元素节点对应的属性值,完成参数值的翻译,再进行传入缓存的数据替换和拷贝操作,将替换后的数据入当前BUF区域。
例如:
DlgDefine.xml文件中引用的片断元素如下:
<ChildWindow OID=″SimpleRename″ BgType=″Color″
BgColorID=″DialogBackground″Width=″30″Height=″20″>
<IncludeFragment File=″Fragment.xml″ FID=″Edit″
Param1=″CPGotoTimeEdit″Param2=″8,82,0,0″Param3=″81″/>
</ChildWindow>
Fragment.xml中FID=“Edit”的定义如下:
<Fragment FID=″Edit″>
<EditControl OID=″%Param1%″ Gaps=″%Param2%″
Width=″%Param3%″
Image=″Common\EidtBox\EditBkg.PNG″ Spilt=″4″ BgType=″Color″
Height=″Bitmap″
BgColorID=″EditBackground″ TextColorID=″Edit″
ChangeNotify=″True″/>
</Fragment>
预翻译完成后的DlgDeefine.xml文档中窗口的定义变为:
<ChildWindow OID=″SimpleRename″ BgType=″Color″
BgColorID=″DialogBackground″
Width=″30″Height=″20″>
<EditControl OID=″CPGotoTimeEdit″Gaps=″8,82,0,0″Width=″81″
Image=″Common\EidtBox\EditBkg.PNG″Split=″4″BgType=″Color″
Height=″Bitmap″
BgColorID=″EditBackground″ TextColorID=″Edit″
ChangeNotify=″True″/>
需要说明的是,执行完本步骤后,继续执行步骤502。
在第一层的Include元素文件和Include Fragment元素文件解析结束后,递归解析新缓存中的内容,直到没有Include元素和Include Fragment元素。
需要说明的是,本发明方法可以根据实际需要对各个步骤顺序进行调整。
本发明在客户端软件启动之前进行原始数据的解析,随客户端软件发布的皮肤文件是已经编译好的目标皮肤文件,提升了软件启动时加载皮肤的速度,减少运行客户端软件时的时间消耗。
本发明在上述实施方式中提供了皮肤设计方法和应用场景,相应地,本发明还提供了应用上述皮肤设计方法的装置。
如图6所示,为本发明中一种皮肤设计装置结构示意图,包括:
获取模块610,用于对皮肤系统中表征不同的皮肤控件对象进行抽象,得到所述皮肤系统的片段元素,供解析模块630使用。
预处理模块620,用于对包含获取模块610得到的片断元素的源皮肤文件进行预加载处理,得到目标皮肤文件,供解析模块630使用。
上述预处理模块620,具体用于读取所述源皮肤文件中的原始皮肤元素;如果所述原始皮肤元素为片段元素,则根据所述片断元素的文件属性搜索所述片断元素中的参数字串,将所述参数字串替换为对应的属性值,并更新所述片段元素的缓存空间的首地址和长度;如果所述原始皮肤元素为文件元素,则更新所述文件元素的缓存空间的首地址和长度。
解析模块630,用于解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数,将所述目标皮肤文件映射到对应的控件类,生成所述目标皮肤文件对应的控件对象。
其中,目标皮肤文件包括公共资源集合和片段元素,公共资源集合为皮肤系统中的基本配置信息,包含多种元公共元素;片段元素为以所述元公共元素为基础的控件原型,片段元素提供可配置参数的接口,通过配置不同的参数实例化为不同的控件对象。
绘制模块640,用于绘制用户交互界面的皮肤,将解析模块630生成的控件对象呈现在所述用户交互界面的皮肤上。
本发明在皮肤系统中引入片段元素,通过对片段元素配置参数可以呈现不同的皮肤效果,实现界面的统一化和多样化,并简化了资源管理。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以集成于一体,也可以分离部署;可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (10)
1.一种皮肤设计方法,其特征在于,包括以下步骤:
解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数,将所述目标皮肤文件映射到对应的控件类,生成所述目标皮肤文件对应的控件对象;
绘制用户交互界面的皮肤,将所述控件对象呈现在所述用户交互界面的皮肤上。
2.如权利要求1所述的方法,其特征在于,所述目标皮肤文件包括公共资源集合和片段元素,
所述公共资源集合为皮肤系统中的基本配置信息,包含多种元公共元素;
所述片段元素为以所述元公共元素为基础的控件原型,所述片段元素提供可配置参数的接口,通过配置不同的参数实例化为不同的控件对象。
3.如权利要求2所述的方法,其特征在于,所述解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数之前,还包括:
对所述皮肤系统中表征不同的皮肤控件对象进行抽象,得到所述皮肤系统的片段元素。
4.如权利要求1所述的方法,其特征在于,所述解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数之前,还包括:
对包含所述片断元素的源皮肤文件进行预加载处理,得到所述目标皮肤文件。
5.如权利要求4所述的方法,其特征在于,所述对包含所述片断元素的源皮肤文件进行预加载处理,得到所述目标皮肤文件,具体包括:
读取所述源皮肤文件中的原始皮肤元素;
如果所述原始皮肤元素为片段元素,则根据所述片断元素的文件属性搜索所述片断元素中的参数字串,将所述参数字串替换为对应的属性值,并更新所述片段元素的缓存空间的首地址和长度;如果所述原始皮肤元素为文件元素,则更新所述文件元素的缓存空间的首地址和长度。
6.一种皮肤设计装置,其特征在于,包括:
解析模块,用于解析目标皮肤文件中的片断元素以及所述片断元素对应的配置参数,将所述目标皮肤文件映射到对应的控件类,生成所述目标皮肤文件对应的控件对象;
绘制模块,用于绘制用户交互界面的皮肤,将所述解析模块生成的控件对象呈现在所述用户交互界面的皮肤上。
7.如权利要求6所述的装置,其特征在于,所述目标皮肤文件包括公共资源集合和片段元素,
所述公共资源集合为皮肤系统中的基本配置信息,包含多种元公共元素;
所述片段元素为以所述元公共元素为基础的控件原型,所述片段元素提供可配置参数的接口,通过配置不同的参数实例化为不同的控件对象。
8.如权利要求7所述的装置,其特征在于,还包括:
获取模块,用于对所述皮肤系统中表征不同的皮肤控件对象进行抽象,得到所述皮肤系统的片段元素,供所述解析模块使用。
9.如权利要求6所述的装置,其特征在于,还包括:
预处理模块,用于对包含所述获取模块得到的片断元素的源皮肤文件进行预加载处理,得到所述目标皮肤文件,供所述解析模块使用。
10.如权利要求9所述的装置,其特征在于,
所述预处理模块,具体用于读取所述源皮肤文件中的原始皮肤元素;如果所述原始皮肤元素为片段元素,则根据所述片断元素的文件属性搜索所述片断元素中的参数字串,将所述参数字串替换为对应的属性值,并更新所述片段元素的缓存空间的首地址和长度;如果所述原始皮肤元素为文件元素,则更新所述文件元素的缓存空间的首地址和长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010151912.0A CN102236544B (zh) | 2010-04-21 | 2010-04-21 | 一种皮肤设计方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010151912.0A CN102236544B (zh) | 2010-04-21 | 2010-04-21 | 一种皮肤设计方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102236544A true CN102236544A (zh) | 2011-11-09 |
CN102236544B CN102236544B (zh) | 2014-06-18 |
Family
ID=44887222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010151912.0A Active CN102236544B (zh) | 2010-04-21 | 2010-04-21 | 一种皮肤设计方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102236544B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102646038A (zh) * | 2012-02-28 | 2012-08-22 | 广州市动景计算机科技有限公司 | 控件内容展现方法、控件内容展现装置以及移动终端 |
CN103218115A (zh) * | 2013-03-06 | 2013-07-24 | 广东欧珀移动通信有限公司 | 一种通知栏的优化显示方法及移动终端 |
CN103440127A (zh) * | 2013-08-19 | 2013-12-11 | 中国电子科技集团公司第十五研究所 | 软件图形界面绘制方法和系统 |
CN105468344A (zh) * | 2014-08-26 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 一种浮动层设置方法、装置及电子设备 |
CN107463397A (zh) * | 2017-07-12 | 2017-12-12 | 阔地教育科技有限公司 | 一种批量生成数据的方法、存储设备及装置 |
CN108228293A (zh) * | 2017-12-29 | 2018-06-29 | 北京金山安全软件有限公司 | 一种界面皮肤切换方法及装置 |
CN108334385A (zh) * | 2017-01-18 | 2018-07-27 | 腾讯科技(深圳)有限公司 | 一种应用的用户界面皮肤管理方法及装置 |
CN109213481A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种滑动条控件实现方法及装置 |
CN110275735A (zh) * | 2019-06-24 | 2019-09-24 | 深圳乐信软件技术有限公司 | 一种界面配置方法、装置、终端和存储介质 |
WO2021093672A1 (zh) * | 2019-11-13 | 2021-05-20 | 深圳前海微众银行股份有限公司 | 外部系统的嵌入方法、工作流系统、设备及计算机可读存储介质 |
CN116112725A (zh) * | 2022-12-29 | 2023-05-12 | 易视腾科技股份有限公司 | 一种互联网电视用户界面多风格切换的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713140A (zh) * | 2004-06-25 | 2005-12-28 | 华为技术有限公司 | 计算机界面生成方法及装置 |
CN101334728A (zh) * | 2008-07-28 | 2008-12-31 | 北京航空航天大学 | 一种基于xml文档描述的界面生成方法和平台 |
-
2010
- 2010-04-21 CN CN201010151912.0A patent/CN102236544B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713140A (zh) * | 2004-06-25 | 2005-12-28 | 华为技术有限公司 | 计算机界面生成方法及装置 |
CN101334728A (zh) * | 2008-07-28 | 2008-12-31 | 北京航空航天大学 | 一种基于xml文档描述的界面生成方法和平台 |
Non-Patent Citations (1)
Title |
---|
朱颖芳等: "一种基于XML的界面自动生成技术在电信网管中的应用", 《计算机时代》, no. 1, 31 January 2007 (2007-01-31), pages 8 - 10 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102646038A (zh) * | 2012-02-28 | 2012-08-22 | 广州市动景计算机科技有限公司 | 控件内容展现方法、控件内容展现装置以及移动终端 |
CN103218115A (zh) * | 2013-03-06 | 2013-07-24 | 广东欧珀移动通信有限公司 | 一种通知栏的优化显示方法及移动终端 |
CN103440127A (zh) * | 2013-08-19 | 2013-12-11 | 中国电子科技集团公司第十五研究所 | 软件图形界面绘制方法和系统 |
CN105468344A (zh) * | 2014-08-26 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 一种浮动层设置方法、装置及电子设备 |
CN105468344B (zh) * | 2014-08-26 | 2019-08-06 | 腾讯科技(深圳)有限公司 | 一种浮动层设置方法、装置及电子设备 |
CN108334385A (zh) * | 2017-01-18 | 2018-07-27 | 腾讯科技(深圳)有限公司 | 一种应用的用户界面皮肤管理方法及装置 |
CN109213481A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种滑动条控件实现方法及装置 |
CN107463397A (zh) * | 2017-07-12 | 2017-12-12 | 阔地教育科技有限公司 | 一种批量生成数据的方法、存储设备及装置 |
CN108228293A (zh) * | 2017-12-29 | 2018-06-29 | 北京金山安全软件有限公司 | 一种界面皮肤切换方法及装置 |
CN108228293B (zh) * | 2017-12-29 | 2021-08-13 | 北京金山安全软件有限公司 | 一种界面皮肤切换方法及装置 |
CN110275735A (zh) * | 2019-06-24 | 2019-09-24 | 深圳乐信软件技术有限公司 | 一种界面配置方法、装置、终端和存储介质 |
WO2021093672A1 (zh) * | 2019-11-13 | 2021-05-20 | 深圳前海微众银行股份有限公司 | 外部系统的嵌入方法、工作流系统、设备及计算机可读存储介质 |
CN116112725A (zh) * | 2022-12-29 | 2023-05-12 | 易视腾科技股份有限公司 | 一种互联网电视用户界面多风格切换的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102236544B (zh) | 2014-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102236544B (zh) | 一种皮肤设计方法及装置 | |
CN111241454B (zh) | 一种生成网页代码的方法、系统和装置 | |
US9904522B2 (en) | Web development system | |
CN111666526A (zh) | 页面生成方法、装置、设备及存储介质 | |
CN113010154B (zh) | 基于动态加载的二级数据管理界面可视化开发配置方法 | |
CN113448562B (zh) | 一种逻辑代码自动生成方法、装置和电子设备 | |
CA3152833A1 (en) | Webpage editing method and device | |
US9817811B2 (en) | Web server system, dictionary system, dictionary call method, screen control display method, and demonstration application generation method | |
US20120124550A1 (en) | Facilitating database application code translation from a first application language to a second application language | |
KR20090089601A (ko) | 문서 작성용 응용 프로그램을 이용하여 문서의 양식과 입력데이터를 결합하여 자동으로 문서를 작성하는 문서 작성자동화 시스템 및 문서 작성 자동화 방법 | |
CN113032708A (zh) | 一种无代码Web开发系统 | |
CN115113850B (zh) | 一种跨平台应用的构建、运行方法、服务器、终端和系统 | |
CN111068328A (zh) | 游戏广告配置表格的生成方法、终端设备及介质 | |
CN113254455A (zh) | 数据库的动态配置方法、装置、计算机设备及存储介质 | |
CN116755669A (zh) | 一种基于dsl语言操作模型的低代码开发方法和工具 | |
CN116719523A (zh) | 页面渲染方法及电子设备 | |
JP2002527814A (ja) | コンポーネント・ベース型ソース・コード・ジェネレータ | |
CN114118042A (zh) | 支持复杂多任务定义的开放式地理信息采集模板语言设计及应用方法 | |
CN112307404A (zh) | 基于源文件的文档网站的设置方法、装置、设备及介质 | |
CN110221827B (zh) | 数据处理方法及相关装置 | |
CN113778541A (zh) | 一种小程序生成方法、装置、电子设备和存储介质 | |
CN117827218A (zh) | 低代码应用支持多语言的开发方法、装置和电子设备 | |
CN113506099A (zh) | 申报业务的配置系统、方法、计算机设备和存储介质 | |
CN116755684B (zh) | OAS Schema的生成方法、装置、设备及介质 | |
CN111694723B (zh) | 产品在h5下运行时对节点及组件编辑的方法、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |