一种可扩展的皮肤系统及其实现方法技术方案

技术编号:2825627 阅读:268 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种可扩展的皮肤系统,包括:皮肤控件管理器,用于管理所有皮肤控件,负责从XML解析器中读取解析后的XML配置文件中的相关配置信息并创建所需皮肤控件;基本控件,用于在用户使用皮肤系统创建应用程序时直接使用、或作为基本皮肤控件创建用户所需的皮肤控件;XML解析器,负责读取并解析XML配置文件,将解析后的内容提供给皮肤控件管理器调用并读取。本发明专利技术还公开了一种可扩展皮肤系统的实现方法,提供一个以上基本控件,并基于提供的基本控件创建所需的皮肤控件。采用本发明专利技术能在系统资源占用尽量少的基础上,实现皮肤控件的任意扩展。

【技术实现步骤摘要】

本专利技术涉及皮肤技术,特别是涉及一种可扩展的皮肤系统及其实现方法
技术介绍
通常,软件运行时都会有交互界面,以便于接受用户指令并向用户反馈信息,交互界面的好坏是一个软件是否被用户接受的重要因素。现有的许多软件都使用皮肤系统来优化交互界面的表现,传统的皮肤系统主要有两种发展方向:一种是追求完备,在实现皮肤系统过程中不注重系统资源优化,导致皮肤系统相当庞大;另一种是皮肤系统与软件内部逻辑耦合很好,皮肤系统占用资源不高,但难以扩展。随着计算机处理能力的提高以及交互界面不断发展的需要,皮肤系统的架构也在不断发展,总体上可分为三种方案:在代码中定义皮肤相关元素、使用INI文件定义少量皮肤元素属性、使用扩展标记语言(XML)或相关可扩展标识语言描述各种皮肤元素属性及行为。其中,由于前两种方案在其描述能力和可扩展性上都存在较大的局限性,在现代皮肤系统设计中很少采用,因此下面主要对第三种方案的相关现有技术进行说明。一般,皮肤系统需要提供以下内容:一组已实现的皮肤控件、一组与已实现皮肤控件相关联的图像文件、一组皮肤系统的对外接口、一种描述皮肤系统相关属性与行为的标识语言。其中,皮肤控件也可称为皮肤组件或皮肤元素,对外接口就是指外部应用编程接口(API)。在现有的皮肤系统中,一种皮肤系统仅实现与特定应用相关的一些皮肤控件,另一种皮肤系统则实现尽可能多的皮肤控件,两种系统都会提供相应皮肤控件的名称关键字和属性关键字,用户在皮肤描述文件中必须使用所提供的关-->键字来描述皮肤控件,不能对皮肤控件进行扩展。现有的皮肤系统通常将皮肤控件与对应的图像文件进行一对一的关联,在创建皮肤控件时,每个皮肤控件都会加载其所关联的图像文件,然后根据属性定义对皮肤控件进行绘制,其中,皮肤控件关联的图像文件宽高与皮肤控件自身的宽高需要保持一致,才能保证正确绘制。对于个别需要在程序运行中变形的皮肤控件,其所关联的图像文件会具有水平或垂直延展的属性定义,但对于复杂的四周延展或透明区域定义,则不能提供相关的属性,而必须在图像文件设计时进行切割,分成更小的皮肤控件单元进行处理。比如:对于一个可变形的、圆角矩形形状的皮肤控件,它在变形过程中四个角保持不变,但四条边以及矩形中部都会进行相关的延展。那么,现有皮肤系统的处理方法通常是将该皮肤控件的四个角单独切分成四个独立的小皮肤控件,这些小皮肤控件不可延展;而其他部分定义为另一个小皮肤控件,该小皮肤控件可以作某种方向上的延展。现有皮肤系统中,皮肤描述文件中所描述的各个皮肤控件基本是相互独立的,各个皮肤控件之间不对其他皮肤控件进行复用。比如:在现有系统中,一个窗口皮肤控件和一个列表皮肤控件都需要用到滚动条皮肤控件,但在皮肤描述文件中需要在描述窗口皮肤控件和描述列表皮肤控件时都描述滚动条皮肤控件的属性,且在创建时也各自独立创建。从上述描述可以看出,现有皮肤系统在实际应用中存在以下问题:第一、用户不能根据自身需要方便地扩展皮肤控件,因此,对于那些只提供应用相关皮肤控件的皮肤系统,其应用范围非常狭窄;而对于那些提供完备皮肤控件的皮肤系统,则非常庞大、复杂,不适合于轻量级简单的应用环境。第二、如果多个皮肤控件关联到同一个图像文件,由于每个皮肤控件创建时都会独立加载图像文件,那么,同一个图像文件将会被加载多次,会重复占用更多的系统资源,导致系统资源的浪费。第三、现有皮肤系统图像文件在加载图像后所做得变换很少,因此对于一些需要特殊变化的皮肤控件需要进行切分,分成若干个行为更加单一的皮肤控-->件,如此,不仅增加了系统资源的占用,还增加了处理的复杂度。第四、当多个控件使用相同的皮肤控件作为它的一部分时,独立描述与创建相同的皮肤控件,也将导致更多的系统资源占用。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种可扩展的皮肤系统及其实现方法,能在系统资源占用尽量少的基础上,实现皮肤控件的任意扩展。为达到上述目的,本专利技术的技术方案是这样实现的:本专利技术提供了一种可扩展的皮肤系统,包括:皮肤控件管理器、一个以上基本控件以及XML解析器;其中,皮肤控件管理器,用于管理所有皮肤控件,负责从XML解析器中读取解析后的XML配置文件中的相关配置信息并创建所需皮肤控件;基本控件,用于在用户使用皮肤系统创建应用程序时直接使用、或作为基本皮肤控件创建用户所需的皮肤控件;XML解析器,负责读取并解析XML配置文件,将解析后的内容提供给皮肤控件管理器调用并读取。所述皮肤控件管理器进一步包括:皮肤控件管理单元、皮肤控件创建单元、配置信息读取单元;其中,皮肤控件管理单元,用于管理所有皮肤控件;配置信息读取单元,负责从XML解析器中读取解析后的配置信息,并将读取的配置信息发送给皮肤控件创建单元和皮肤控件管理单元;皮肤控件创建单元,根据收到的配置信息创建用户所需的皮肤控件。其中,所述基本控件包括提供接口的基类控件、设置参数的参数类、提供控制特性的控件类以及作为公共元素的公共控件。上述方案中,所述皮肤控件管理器还包括皮肤控件ID到其创建函数指针的映射表、以及皮肤控件类型到其创建函数指针的映射表。上述方案中,所述皮肤控件管理器还包括图像加载管理单元,用于控制图像文件是否加载。-->上述方案中,所述皮肤控件管理器还包括策略设置单元,用于设置皮肤控件对齐策略和图像变形绘制策略。本专利技术还提供了一种可扩展皮肤系统的实现方法,包括:提供一个以上基本控件,该方法还包括:A、从XML配置文件中读取配置信息,根据所读取的配置信息查找创建函数,如果找到,则执行步骤B,否则结束当前处理流程;B、调用所找到的创建函数实例化皮肤控件,并根据基本控件获得皮肤控件的参数对象指针;C、从XML配置文件中读入皮肤控件关联的属性,配置参数对象,根据配置的参数创建所需的皮肤控件。其中,步骤C之后,该方法进一步包括:通过递归方式创建步骤C所创建的皮肤控件的子皮肤控件,并将创建的子皮肤控件加入到相应的子皮肤控件列表中。上述方案中,所述基本控件包括提供接口的基类控件、设置参数的参数类、提供控制特性的控件类以及作为公共元素的公共控件。上述方案中,该方法进一步包括:在皮肤控件管理器中设置皮肤控件ID到其创建函数指针的映射表、以及皮肤控件类型到其创建函数指针的映射表;步骤A所述查找创建函数为:根据所设置的映射表进行查找。上述方案中,图像文件加载时,该方法还包括:a.读入与所创建皮肤控件相关联的图像文件名;b.根据图像文件名在所述映射表中查找图像数据;c.判断是否找到所需的图像数据,如果找到,则将相应图像数据的指针反馈绐当前要创建的皮肤控件,并将指针保存在当前要创建的皮肤控件的成员变量中;否则,分配相应图像数据所需的资源,加载相应图像数据,并在映射表中增加所述图像文件名到图像数据的映射项。上述方案中,该方法还包括:预先设置皮肤控件对齐方式的策略以及图像变形绘制的策略。-->本专利技术所提供的可扩展的皮肤系统及其实现方法,具有以下的优点和特点:1)本专利技术提供一系列基本控件和一个皮肤控件管理器,使用户可以直接使用所提供的皮肤控件,也可以根据自身需要在皮肤控件管理器的控制下,基于所提供的基本控件动态任意创建自身所需的皮肤控件,轻松扩展用户自己特定的皮肤控件,而不需要对已构架的皮肤系统进行任何修改。对于不同皮肤本文档来自技高网
...

【技术保护点】
一种可扩展的皮肤系统,其特征在于,该系统包括:皮肤控件管理器、一个以上基本控件以及XML解析器;其中,皮肤控件管理器,用于管理所有皮肤控件,负责从XML解析器中读取解析后的XML配置文件中的相关配置信息并创建所需皮肤控件;基 本控件,用于在用户使用皮肤系统创建应用程序时直接使用、或作为基本皮肤控件创建用户所需的皮肤控件;XML解析器,负责读取并解析XML配置文件,将解析后的内容提供给皮肤控件管理器调用并读取。

【技术特征摘要】
1、一种可扩展的皮肤系统,其特征在于,该系统包括:皮肤控件管理器、一个以上基本控件以及XML解析器;其中,皮肤控件管理器,用于管理所有皮肤控件,负责从XML解析器中读取解析后的XML配置文件中的相关配置信息并创建所需皮肤控件;基本控件,用于在用户使用皮肤系统创建应用程序时直接使用、或作为基本皮肤控件创建用户所需的皮肤控件;XML解析器,负责读取并解析XML配置文件,将解析后的内容提供给皮肤控件管理器调用并读取。2、根据权利要求1所述的皮肤系统,其特征在于,所述皮肤控件管理器进一步包括:皮肤控件管理单元、皮肤控件创建单元、配置信息读取单元;其中,皮肤控件管理单元,用于管理所有皮肤控件;配置信息读取单元,负责从XML解析器中读取解析后的配置信息,并将读取的配置信息发送给皮肤控件创建单元和皮肤控件管理单元;皮肤控件创建单元,根据收到的配置信息创建用户所需的皮肤控件。3、根据权利要求1所述的皮肤系统,其特征在于,所述基本控件包括提供接口的基类控件、设置参数的参数类、提供控制特性的控件类以及作为公共元素的公共控件。4、根据权利要求1、2或3所述的皮肤系统,其特征在于,所述皮肤控件管理器还包括皮肤控件ID到其创建函数指针的映射表、以及皮肤控件类型到其创建函数指针的映射表。5、根据权利要求1、2或3所述的皮肤系统,其特征在于,所述皮肤控件管理器还包括图像加载管理单元,用于控制图像文件是否加载。6、根据权利要求1、2或3所述的皮肤系统,其特征在于,所述皮肤控件管理器还包括策略设置单元,用于设置皮肤控件对齐策略和图像变形绘制策略。7、一种可扩展皮肤系统的实现方法,其特征在于,提供一个以上基本控...

【专利技术属性】
技术研发人员:吴运声
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1