本发明涉及客户端换肤技术领域,尤其涉及一种基于xml的ui换肤方法、系统、装置及存储介质。
背景技术:
随着计算机技术的发展,专业客户端软件在工作和生活中的深入使用,用户对客户端软件除了功能上的要求更加强大以外,对软件界面美观及良好交互的要求也越来越高。
传统使用c 语言开发的大型pc客户端界面性能比较高、界面流畅,但技术复杂、开发成本高以及对开发人员的要求也很高;而且对一些复杂绚丽的界面实现难度大,同时也很难实现动态高效的界面切换及换肤效果。近年来流行的基于开源浏览器技术的nodejs与webkit等web技术开发的pc客户端界面则刚好相反,界面超炫、开发成本低,但是性能不高、加载速度慢,对部分操作和时效要求很高的软件场景力不从心。
技术实现要素:
有鉴于此,本发明实施例的目的是提供一种基于xml的ui换肤方法、系统、装置及存储介质。该方法轻松实现复杂绚丽界面、开发成本低,同时加载速度快、性能好。
第一方面,本发明实施例提供了一种基于xml的ui换肤方法,包括步骤:
接收换肤指令;
根据所述换肤指令调用接口更换当前页面的风格文件,并根据更换后的风格文件渲染界面;
其中,所述风格文件为xml格式文件,所述更换和所述渲染由c 代码实现;
所述风格文件在程序启动后已加载存储。
可选地,方法还包括步骤:
当接收到换肤指令后,根据所述换肤指令更新页面风格样式版本号;
比较更新后的页面风格样式版本号与待渲染页面风格文件版本号是否相同;
当两者不相同,则重新加载待渲染页面风格文件;否则,不重新加载。
可选地,所述界面由若干个控件组成,控件风格加载步骤包括:
加载界面对应的页面文件,并检测所述页面文件是否有定义风格文件;当检测有定义风格文件,则加载所述风格文件;
根据所述页面文件生成控件,并检测所述控件是否有默认风格或自定义风格;当检测有默认风格,则加载所述默认风格;当检测有自定义风格,则根据自定义风格id查找对应风格样式。
可选地,所述风格样式的调用单独放在风格文件中。
可选地,所述风格文件包含若干个风格组,每个风格组包含若干个风格;
可选地,所述风格支持继承及组合。
第二方面,本发明实施例提供了一种基于xml的ui换肤系统,包括:
指令接收模块,用于接收换肤指令;
换肤模块,用于根据所述换肤指令调用接口更换当前页面的风格文件,并根据更换后的风格文件渲染界面;
其中,所述风格文件为xml格式文件,所述更换和所述渲染由c 代码实现;
所述风格文件在程序启动后已加载存储。
第三方面,本发明实施例提供了一种基于xml的ui换肤装置,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现上述的基于xml的ui换肤方法。
第四方面,本发明实施例提供了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行上述的基于xml的ui换肤方法。
第五方面,本发明实施例提供了一种基于xml的ui换肤系统,包括显示设备以及与所述显示设备连接的计算机设备;其中,
所述显示设备,用于显示ui界面;
所述计算机设备包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现上述的基于xml的ui换肤方法。
实施本发明实施例包括以下有益效果:本发明实施例通过xml格式文件存储风格文件,避免了采用c 代码编写皮肤文件而导致的开发成本高、复杂界面实现难度大,从而实现开发成本低且界面绚丽多彩;通过c 代码实现风格文件的更换和界面渲染,避免了web技术加载速度慢且性能不高,实现运行效率高且加载速度快。
附图说明
图1是本发明实施例提供的一种风格文件关系图;
图2是本发明实施例提供的一种基于xml的ui换肤方法的步骤流程示意图;
图3是本发明实施例提供的一种基于xml的ui换肤实现的原理图;
图4是本发明实施例提供的一种基于xml的ui换肤的流程示意图;
图5是本发明实施例提供的一种控件风格加载的流程示意图;
图6是本发明实施例提供的一种基于xml的ui换肤系统的结构框图;
图7是本发明实施例提供的一种基于xml的ui换肤装置的结构框图;
图8是本发明实施例提供的一种基于xml的ui换肤系统的另一种结构框图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步的详细说明。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
如图1所示,风格层叠样式表是用xml(extensiblemarkuplanguage,标准通用标记语言)格式文件记录ui界面样式、字体、颜色、图片路径及位置等信息组成的一个风格。风格支持继承与组合:一个风格可以是另一个风格的继承和扩展,也可以由几个风格组成一个新的风格。风格可以直接添加到页面风格中,多个风格可以组成一个风格组,每个风格都有一个独有的id属性,id属性在同一风格组必须是唯一的,多个风格组组成一个风格样式文件;风格样式文件理论上不属于任何程序页面,在任何程序页面文件中都可以将其引用。通过上述方式实现多个页面风格的统一。除了单独定义的风格文件外,风格也可以保存在程序页面文件的头部,作为某个程序页面独有的风格。程序页面可以指定的一个风格组,表示本页面使用的风格集合。
风格文件提供了丰富的控件样式外观,以及设置文本和背景属性的能力:例如,允许为任何控件创建边框,以及设置控件边框与控件内容间的距离;允许随意改变文本的大小写方式、修饰方式以及其他页面效果。另外,可以将相同样式的控件进行归类,使用同一个样式进行定义;也可以将某个样式应用到所有同名的控件标签中;也可以将一个风格样式指定到某个页面元素中。如果要修改样式,我们只需要在样式列表中找到相应的样式声明进行修改。
以下以几个不同风格层叠样式表的实例做简要说明。
例一:<!--普通文本风格-->
<definename="nomalkeylabelstyle"textcolor="#ffa1abbc"font="1"/>
<definename="nomallabelstyle"textcolor="#ffdee4ee"font="1"/>
<definename="nomallabelstyle1"textcolor="#fffb8c0e"font="1"/>
例一中定义了不同文本风格,风格里可以指定界面上使用这种风格时显示文本的字体颜色及字体类型。
例二:<!--数据查找控件-->
<definename="timedataeditcolor"bkcolor="#ff283039"nativebkcolor="#ff283039"textcolor="#ffa1abbc"/>
<definename="kminbigdropbtn"width="70"height="20"font="3"textpadding="0,0,10"define="kminbigdropbtncolor,kminbtntextcolor"/>
例二中定义了一个编辑框颜色风格及一个下拉按钮风格,风格里指定了模块的背景颜色、大小及位置等属性;第二个风格kminbigdropbtn有两个父风格kminbigdropbtncolor、kminbtntextcolor,表示它是由这两个父风格继承组合过来的,包含了这两个父风格的所有属性。
例三:<!—单选框控件-->
<defaultname="checkbox"width="90"height="20"align="left"textpadding="18,4,0,0"define="layouttextcolor"normalimage="file='common\main_checkbox_nor.png'dest='0,2,16,18'"hotimage="file='common\main_checkbox_nor.png'dest='0,2,16,18'"selectedimage="file='common\main_checkbox_selected.png'dest='0,2,16,18'"focusedimage="file='common\main_checkbox_nor.png'dest='0,2,16,18'"disabledimage="file='common\main_checkbox_disabled.png'dest='0,2,16,18'"font="0"/>
例三中定义了单选框的默认风格样式,表示对应页面的单选框不需要设置任何属性,自动就有了上面定义的大小、文本位置、字体、选中及滑动对应的图片效果。
如图2所示,本发明实施例提供了一种基于xml的ui换肤方法,包括步骤:
s1、接收换肤指令。
s2、根据所述换肤指令调用接口更换当前页面的风格文件,并根据更换后的风格文件渲染界面;其中,所述风格文件为xml格式文件,所述更换和所述渲染由c 代码实现;所述风格文件在程序启动后已加载存储。
可选地,上述方法还包括步骤:
当接收到换肤指令后,根据所述换肤指令更新页面风格样式版本号;
比较更新后的页面风格样式版本号与待渲染页面风格文件版本号是否相同;
当两者不相同,则重新加载待渲染页面风格文件;否则,不重新加载。
如图3所示,皮肤风格文件定义了界面上各控件的字体、颜色、尺寸、图片路径及位置等信息,描述了界面上的信息格式化和显示的方式。除了定义样式以外,风格还可以直接定义子模块。每个控件可以设置一个或者多个风格,软件ui界面文件的各控件加载根据定义的风格id属性加载皮肤风格文件里对应的风格样式的字体、颜色位置等参数定义,最后由c 逻辑代码将软件界面渲染后显示给用户。
如图4所示,每个显示设备的界面窗口记录了当前风格样式的一个版本号。当用户需要换肤时,软件调用对应的api接口动态设置和切换程序界面所使用的风格文件,同时更新界面版本号,控件在动态渲染时通过对比自身风格文件版本号与界面风格文件版本号来判断是否需要重新加载样式及资源文件,风格样式根据定义的覆盖规则更改当前界面上对应控件位置、大小、字体、及图片等样式参数,从而实现动态换肤。控件只在渲染时才会重新加载风格样式,最大程度提高了换肤的效率及界面响应速度,版本号的管理也保证了控件风格的正确加载。
此外,在客户端软件界面中,经常会有大量重复的表格、按钮、图表、及文本元素形成各种界面模块,模块越多,界面文件越复杂。而将风格样式的声明或调用单独放到风格文件中,可以大大的减小页面的体积,这样在加载页面时使用的时间也会大大的减少。另外,风格样式的复用更大程度的缩减了页面的体积,减少启动加载的时间,提高了程序运行效率。
实施本发明实施例包括以下有益效果:本发明实施例通过xml格式文件存储风格文件,避免了采用c 代码编写皮肤文件而导致的开发成本高、复杂界面实现难度大,从而实现开发成本低且界面绚丽多彩;通过c 代码实现风格文件的更换和界面渲染,避免了web技术加载速度慢且性能不高,实现运行效率高且加载速度快。
可选地,所述界面由若干个控件组成,控件风格加载步骤包括:
加载界面对应的页面文件,并检测所述页面文件是否有定义风格文件;当检测有定义风格文件,则加载所述风格文件;
根据所述页面文件生成控件,并检测所述控件是否有默认风格或自定义风格;当检测有默认风格,则加载所述默认风格;当检测有自定义风格,则根据自定义风格id查找对应风格样式。
如图5所示,客户端应用程序启动后,加载界面对应的页面文件,同时检查页面文件是否有定义风格文件及风格组。如果有定义风格文件,程序将风格文件信息加载至电脑内存中,然后根据页面文件内容生成各种模块控件,如果模块控件中有默认风格,模块控件先加载风格里设置的控件默认风格,如果控件有设置自定义风格id,则从内存中查找id对应的风格样式属性,最后根据样式属性里的控件大小、位置、文字颜色、背景色、鼠标效果等参数渲染控件。
如图6所示,本发明实施例提供了一种基于xml的ui换肤系统,包括:
指令接收模块,用于接收换肤指令;
换肤模块,用于根据所述换肤指令调用接口更换当前页面的风格文件,并根据更换后的风格文件渲染界面;其中,所述风格文件为xml格式文件,所述更换和所述渲染由c 代码实现;所述风格文件在程序启动后已加载存储。
可见,上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
如图7所示,本发明实施例提供了一种基于xml的ui换肤装置,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现上述的基于xml的ui换肤方法。
可见,上述方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
此外,本发明实施例提供了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行上述的基于xml的ui换肤方法。同样地,上述方法实施例中的内容均适用于本存储介质实施例中,本存储介质实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
如图8所示,本发明实施例提供了一种基于xml的ui换肤系统,包括显示设备以及与所述显示设备连接的计算机设备;其中,
所述显示设备,用于显示ui界面;
所述计算机设备包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现上述的基于xml的ui换肤方法。
具体地,对于所述显示设备,其主要通过显示屏来实现,并且其可具体包括至少一个平面显示屏或曲面显示屏;而对于所述计算机设备,其可为不同类型的电子设备,包含但不限于有台式电脑、手提电脑等终端。
可见,上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
1.一种基于xml的ui换肤方法,其特征在于,包括步骤:
接收换肤指令;
根据所述换肤指令调用接口更换当前页面的风格文件,并根据更换后的风格文件渲染界面;
其中,所述风格文件为xml格式文件,所述更换和所述渲染由c 代码实现;
所述风格文件在程序启动后已加载存储。
2.根据权利要求1所述的基于xml的ui换肤方法,其特征在于,还包括步骤:
当接收到换肤指令后,根据所述换肤指令更新页面风格样式版本号;
比较更新后的页面风格样式版本号与待渲染页面风格文件版本号是否相同;
当两者不相同,则重新加载待渲染页面风格文件;否则,不重新加载。
3.根据权利要求1所述的基于xml的ui换肤方法,其特征在于,所述界面由若干个控件组成,控件风格加载步骤包括:
加载界面对应的页面文件,并检测所述页面文件是否有定义风格文件;当检测有定义风格文件,则加载所述风格文件;
根据所述页面文件生成控件,并检测所述控件是否有默认风格或自定义风格;当检测有默认风格,则加载所述默认风格;当检测有自定义风格,则根据自定义风格id查找对应风格样式。
4.根据权利要求3所述的基于xml的ui换肤方法,其特征在于,所述风格样式的调用单独放在风格文件中。
5.根据权利要求1-4任一项所述的基于xml的ui换肤方法,其特征在于,所述风格文件包含若干个风格组,每个风格组包含若干个风格。
6.根据权利要求5所述的基于xml的ui换肤方法,其特征在于,所述风格支持继承及组合。
7.一种基于xml的ui换肤系统,其特征在于,包括:
指令接收模块,用于接收换肤指令;
换肤模块,用于根据所述换肤指令调用接口更换当前页面的风格文件,并根据更换后的风格文件渲染界面;
其中,所述风格文件为xml格式文件,所述更换和所述渲染由c 代码实现;
所述风格文件在程序启动后已加载存储。
8.一种基于xml的ui换肤装置,其特征在于,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-6任一项所述的基于xml的ui换肤方法。
9.一种存储介质,其中存储有处理器可执行的指令,其特征在于,所述处理器可执行的指令在由处理器执行时用于执行如权利要求1-6任一项所述的基于xml的ui换肤方法。
10.一种基于xml的ui换肤系统,其特征在于,包括显示设备以及与所述显示设备连接的计算机设备;其中,
所述显示设备,用于显示ui界面;
所述计算机设备包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-6任一项所述的基于xml的ui换肤方法。
技术总结