首页> 中国专利> 基于Symbian系统的用户界面的生成方法和系统

基于Symbian系统的用户界面的生成方法和系统

摘要

本发明公开基于Symbian系统的用户界面的生成方法和系统,方法包括:基于Symbian系统的数据结构和数据类型定义具有标准C++接口的自定义数据结构;创建该系统的实现框架中类的子类,子类构成自定义系统实现框架;基于该系统的控件创建自定义控件,并创建包括多个自定义控件的复合控件;继承复合控件生成自定义界面模板;在生成用户界面时,继承自定义界面模板生成用户界面模板,继承自定义系统实现框架生成用户系统实现框架,用户系统实现框架初始化用户界面模板,并在初始化时添加自定义控件。本发明能够提高基于Symbian系统的用户界面开发速度,并提高用户界面表现效果。

著录项

  • 公开/公告号CN103164204A

    专利类型发明专利

  • 公开/公告日2013-06-19

    原文格式PDF

  • 申请/专利权人 北京新媒传信科技有限公司;

    申请/专利号CN201110421866.6

  • 发明设计人 甘寿聪;

    申请日2011-12-15

  • 分类号G06F9/44(20060101);

  • 代理机构11323 北京市隆安律师事务所;

  • 代理人权鲜枝

  • 地址 100089 北京市海淀区万泉庄路28号万柳新贵大厦A座6层602室

  • 入库时间 2024-02-19 19:20:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-17

    授权

    授权

  • 2013-07-24

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20111215

    实质审查的生效

  • 2013-06-19

    公开

    公开

说明书

技术领域

本发明涉及移动通信领域,特别涉及基于Symbian系统的用户界面的生成方法和系统。

背景技术

移动互联网的发展越来越迅猛,目前市场上呈现出iPhone,android,Symbian,windows phone等多个手机系统争鸣的局面。由于基于Symbian系统的手机市场占有率还很大,未来几年内Symbian系统仍将在手机开发中扮演重要角色。用户界面(UI)开发一直是移动终端中应用开发的一个重点。与其它手机系统便捷的UI开发不同,Symbian系统的UI开发较为困难。其主要原因在于,第一,Symbian系统控件表现效果较差,iPhone、android等系统提供的系统控件就能带来很好效果表现,而Symbian上要获得同样效果表现,则需要大量的开发工作,导致Symbian系统中开发速度相对缓慢;第二,Symbian系统UI框架提供的界面之间切换,界面内元素之间的焦点控制功能非常复杂,对于一个复杂的界面,如果仅采用Symbian系统框架提供的方法,需要非常复杂的逻辑代码来实现焦点切换;第三,Symbian C++没有采用标准C++库,在内存管理方面显得非常复杂,严重影响开发速度,而且容易造成内存泄露。

发明内容

本发明提供的基于Symbian系统的用户界面生成的方法和系统,以解决现有技术中Symbian系统中用户界面开发速度相对缓慢,用户界面表现效果差的问题。

本发明公开了一种基于Symbian系统的用户界面的生成方法,所述方法包括:

步骤1,基于Symbian系统的数据结构和数据类型定义具有标准C++接口的自定义数据结构,操作中使用的变量的类型包括自定义数据结构;

步骤2,创建Symbian系统的实现框架中类的子类,在所述子类中初始化全局数据,所述子类构成自定义系统实现框架;

步骤3,基于Symbian系统的控件创建具有预设绘制操作的自定义控件,并创建包括多个自定义控件的复合控件;

步骤4,通过继承复合控件的方式生成自定义界面模板;

步骤5,在生成用户界面时,继承自定义界面模板生成用户界面模板,继承自定义系统实现框架生成用户系统实现框架,使用所述用户系统实现框架初始化所述用户界面模板,并在初始化时添加自定义控件。

其中,所述自定义系统实现框架还包括界面栈;

所述方法还包括在生成用户界面后,将生成的用户界面加入用户系统实现框架的界面栈,在显示用户界面时,用户界面从所述界面栈中出栈,并显示所述用户界面。

其中,所述创建包括多个自定义控件的复合控件进一步包括

步骤31,在复合控件中保存当前拥有焦点的自定义控件的索引值,当焦点切换时,保存的索引值对应改变。

其中,所述方法还包括

图片管理器使用哈希表管理图片,以图片路径作为key,以图片的指针为value;

当调用图片时,以调用的图片路径为key,查找哈希表获得key对应的value,依据所述value获得图片。

其中,所述基于Symbian系统的控件创建具有预设绘制操作的自定义控件进一步包括

步骤51,继承Symbian系统的控件类生成自定义类;

步骤52,自定义类中的绘制方法调用自定义虚函数,所述自定义虚函数中参数为Symbian系统的画布类的对象;

步骤53,继承自定义类生成自定义控件,在所述自定义控件中通过所述参数调用画布类的函数实现所述自定义控件的预设绘制操作;

所述创建包括多个自定义控件的复合控件进一步包括:

步骤54,创建容器类,在容器类中定义一个类型为自定义类的容器,将所述多个自定义控件加入容器中。

其中,所述基于Symbian系统的数据结构和数据类型定义具有标准C++接口的自定义数据结构进一步包括:

自定义数据结构中包含数据成员,所述数据成员的类型为Symbian系统的数据类型或数据结构,按预设要求对所述数据成员进行操作,自定义数据结构具有标准C++接口。

其中,所述步骤4还包括在所述自定义界面模板中添加用于管理菜单的菜单控件。

其中,所述图片管理器使用哈希表管理图片,以图片路径作为key,以图片的指针为value进一步包括

当以调用的图片路径为key查找哈希表没有检索到所述key时,解码图片路径下的图片,以图片路径作为key,将key对应value存储为解码的图片的指针。

本发明还公开了一种基于Symbian系统的用户界面的生成系统,其特征在于,所述系统包括:

通用模块,用于基于Symbian系统的数据结构和数据类型定义具有标准C++接口的自定义数据结构,操作中使用的变量的类型包括自定义数据结构;

自定义框架模块,用于创建Symbian系统的系统实现框架中类的子类,在所述子类中初始化全局数据,所述子类构成自定义系统实现框架;基于Symbian系统的控件创建具有预设绘制操作的自定义控件,并创建包括多个自定义控件的复合控件;继承复合控件生成自定义界面模板;

界面生成模块,用于在生成用户界面时,继承自定义界面模板生成用户界面模板,继承自定义系统实现框架生成用户系统实现框架,使用所述系统实现框架初始化所述用户界面模板,并在初始化时添加自定义控件。

其中,所述系统还包括图片管理器,

图片管理器使用哈希表管理图片,以图片路径作为key,以图片的指针为value,当调用图片时,以调用的图片路径为key,查找哈希表获得key对应的value,依据所述value获得图片。

本发明实施例的有益效果是:通过采用自定义数据结构、自定义系统实现框架、自定义控件、以及自定义界面模板,减少开发任务量,加快开发速度;通过使用界面栈,方便界面间切换;通过使用复合控件存储拥有焦点的自定义控件索引值的方法,进行焦点控制;通过使用自定义控件,加强控件表现效果;通过自定义数据结构,使得数据结构具有标准C++接口,方便开发和管理;通过使用哈希表进行图片管理,方便图片调用。

附图说明

图1为本发明基于Symbian系统的用户界面的生成方法的流程图;

图2为本发明基于Symbian系统的用户界面生成方法实施例中所用的自定义框架结构图;

图3为本发明基于Symbian系统的用户界面生成方法实施例中应用自定义框架生成用户界面的示意图;

图4为本发明基于Symbian系统的用户界面生成系统的结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

参见图1,为本发明提供的基于Symbian系统的用户界面的生成方法流程图。

所述方法包括如下步骤。

步骤S100,基于Symbian系统的数据结构和数据类型定义具有标准C++接口的自定义数据结构,操作中使用的变量的类型包括自定义数据结构。

在一较佳的实施方式中,自定义数据结构中包含数据成员,所述数据成员的类型为Symbian系统的数据类型或数据结构,按预设要求对所述数据成员进行操作,自定义数据结构具有标准C++接口。

举例而言,如图2所示,自定义的数据结构包括字符串类型string、宽字符串类型wstring、链表list、哈希表类型hash map、容器类型vector。根据Symbian系统数据结构(描述符)和数据类型实现,在提供标准C++接口的同时,兼容Symbian C++的特性,进而实现便捷开发和高效的内存管理。

比如,对于string,该自定义数据结构中包含一个类型为Symbian系统数据类型RBuf8的数据成员,对该数据成员进行对应的添加预设功能和得到标准C++接口的操作。添加的预设功能如引用计数技术。自定义数据结构的实现基于Symbian系统数据结构和数据类型完成,为一种轻量级的封装,便于使用。

同理,wstring则是包含了一个类型为Symbian系统数据类型RBuf16的数据成员,Vector则是包含了一个类型为Symbian系统数据类型RPointerArray或者RArray的数据成员,且是基于预设功能和标准C++接口进行操作。对于链表list和哈希表类型hash map的内部基于Vector实现。

步骤S200,创建Symbian系统的实现框架中类的子类,在子类中初始化全局数据,子类构成自定义系统实现框架。

举例而言,如图2所示,自定义系统实现框架封装了Symbian系统的实现框架,以便于上层应用程序调用。比如对于Symbian系统核心的类CAknViewAppUi,如果不经过封装,应用程序调用的时候,需要实现一个类继承自CAknViewAppUi,如class CMyViewAppUi:publicCAknViewAppUi。本发明在自定义系统实现框架中编写一个CAknViewAppUi的子类,如class CMyAppUiBase:public CAknViewAppUi,如此处理,上层应用程序只需要继承自子类CMyAppUiBase,如classCMyViewAppUi:public CMyAppUiBase。在该子类中完成对应全局数据的初始化,以及打开日志等预设的任务。由于应用程序继承子类完成任务,能够简化应用程序的接口,应用程序的一些任务在其继承的父类中实现。

在一较佳的实施方式中,所述自定义系统实现框架还包括界面栈;所述方法还包括在生成用户界面后,将生成的用户界面加入用户系统实现框架的界面栈,在显示用户界面时,用户界面从所述界面栈出栈,并显示所述用户界面。

该实施方式中将需要显示的界面都需要添加到该界面栈中,在显示时界面出栈进行显示,方便了界面之间的切换。

步骤S300,基于Symbian系统的控件创建具有预设绘制操作的自定义控件,并创建包括多个自定义控件的复合控件。

在一较佳的实施方式中,所述基于Symbian系统的控件创建具有预设绘制操作的自定义控件进一步包括

步骤S310,继承Symbian系统的控件类生成自定义类。

步骤S320,自定义类中的绘制方法调用自定义虚函数,所述自定义虚函数中参数为Symbian系统的画布类的对象。

步骤S330,继承自定义类生成自定义控件,在所述自定义控件中通过所述参数调用画布类的函数实现所述自定义控件的预设绘制操作。

举例而言,如图2所示,继承自Symbian系统的控件类CCoeControl,实现了包括label(标签)、button(按钮)等基本控件,并定义基本的container(容器)用于管理子控件,方便扩展。

实现自定义控件的一个自定义类是CMyControlBase,其是直接继承自Symbian系统的CCoeControl,在CMyControlB ase中重写CCoeControl的Draw方法(绘制方法),使其调用自定义的虚函数OnPaint(CCanvas &canvas)。label、Button、container等自定义子控件继承自CMyControlBase。在自定义控件中重新实现OnPaint函数,在OnPaint函数中做相应的绘制。OnPaint函数的参数是一个画布类CCanvas对象,CCanvas类里面封装了大量与绘制相关的操作,通过使用OnPaint函数完成该封装,能够大量简化程序的代码。

比如,在现有技术中使用一种颜色填充一个矩形区域,因为没有进行封装,需要在Draw函数中写下以下代码:

 CWindowGc*m_pGc=&this->SystemGc();

 const TRect&r;

TRgb c;

 m_pGc->SetBrushStyle(CGraphicsContext::ESolidBrush);

 m_pGc->SetBrushColor(c);

 m_pGc->SetPenStyle(CGraphicsContext::ENullPen);

 m_pGc->DrawRect(r);

 m_pGc->SetBrushStyle(CGraphicsContext::ENullBrush);

而通过本发明上述方法,封装一个void CCanvas::FillRect(const MyRect&r,TRgb c)函数,FillRect内部调用上述代码,则应用程序只需要在OnPaint中调用canvas.FillRect(r,c)便能够实现该预设绘制操作。

再如,画一个字符串时,定义宽字符串类型WString s,调用canvas.drawstring(s)便可完成。

所述创建包括多个自定义控件的复合控件进一步包括:

步骤340,创建容器类,在容器类中定义一个类型为自定义类的容器,将所述多个自定义控件加入容器中。

进一步地,所述步骤340还包括在复合控件中保存当前拥有焦点的自定义控件的索引值,当焦点切换时,保存的索引值对应改变。

Symbian系统的CCoeControl没有提供多个控件的管理方法,当一个界面需要多个控件,比如有多个button时,button之间焦点的切换实现很麻烦。本发明保存当前拥有焦点的自定义控件的索引值,以实现焦点的切换。

举例而言,复合控件中包括多个待管理的自定义控件,继承自定义类生成容器类,在容器类中定义一个类型为自定义类的容器vector,将所述多个待管理的自定义控件加入vector中。

例如,创建类CMyContainerBase,CMyContainerBase继承自CMyControlBase,CMyContainerBase是一个容器类,用在复合控件的情况下,并提供多个控件之间的焦点切换功能。

CMyContainerBase中包括一个CMyControlBase类型的vector,CMyContainerBase作为一个父控件,它将待管理的自定义控件都作为其子控件,加入到vector中。CMyContainerBase内部保存的一个当前拥有焦点的自定义控件的索引值,当发生焦点切换时,该索引值也对应改变,使得保存的索引值始终指向当前拥有焦点的自定义控件。

该些复杂的逻辑控制都封装在CMyContainerBase内部,外部并不需要知道该逻辑控制,从而达到了所述的焦点控制的目的。

步骤S400,通过继承复合控件的方式生成自定义界面模板。

在一较佳的实施方式中,继承容器类生成界面模板类,该界面模板类为所述自定义界面模板。

举例而言,如图2所示,提供一个界面的界面模板类CMyFormBase,方便上层应用程序进行界面开发,而界面之间的切换则由自定义系统实现框架的界面栈管理。CMyFormBase本质也是一个复合控件,继承自容器类CMyContainerBase。

进一步地,在所述自定义界面模板中添加用于管理菜单的菜单控件。

CMyFormBase包含了一个菜单控件作为子控件。也就是,每个界面都包含一个菜单控件。

步骤S500,在生成用户界面时,继承自定义界面模板生成用户界面模板,继承自定义系统实现框架生成用户系统实现框架,用户系统实现框架初始化用户界面模板,并在初始化时添加自定义控件。

如图3所示,当上层要开发一个界面的时候,继承自界面模板类CMyFormBase实现自己的模板类Form,Form为用户界面模板,使用自定义系统实现框架生成用户系统实现框架,用户系统实现框架初始化所述用户界面模板,并在初始化时将需要添加的自定义控件作为子控件添加到添加用户界面模板,比如button,label等作为子控件添加到Form,并加入适当的布局,生成界面1和界面2。通过该方法实现一个界面的快速开发。

在一较佳的实施方式中,所述方法还包括图片管理器使用哈希表(key,value)管理图片,以图片路径作为key(关键码),以图片的指针为value(值);当调用图片时,以调用的图片路径为key,查找哈希表获得key对应的value,依据所述value获得图片。

进一步地,所述图片管理器使用哈希表管理图片,以图片路径作为key,以图片的指针为value进一步包括当以调用的图片路径为key查找哈希表没有检索到所述key时,解码图片路径下的图片,以图片路径作为key,将key对应value存储为解码的图片的指针。

举例而言,如图3所示,图片管理器内部维护一个hash map(哈希表),当需要图片的时候,程序会调用图片管理器一个获取图片的接口,由于每个图片的地址是唯一的,所以在hash map中存在的一对键值是<wstring,CImage*>,即<图片路径,图片指针>。当图片是第一次使用的时候,图片管理器在hash map里找不到该图片路径对应的key(关键码,即检索值),则同步解码图片,然后将图片路径作为key,解码后的图片类型指针作为value,添加到hash map中,当下次需要使用该图片,即再次调用GetImage接口的时候,直接获得图片类型指针。通过使用hash map,来达到图片管理的目的。

本发明一种基于Symbian系统的用户界面生成的系统如图4所示。

通用模块100,用于基于Symbian系统的数据结构和数据类型定义具有标准C++接口的自定义数据结构,操作中使用的变量的类型包括自定义数据结构。

自定义框架模块200,用于创建Symbian系统的系统实现框架中类的子类,在所述子类中初始化全局数据,所述子类构成自定义系统实现框架;基于Symbian系统的控件创建具有预设绘制操作的自定义控件,并创建包括多个自定义控件的复合控件;通过继承复合控件的方式生成自定义界面模板。

界面生成模块300,用于在生成用户界面时,继承自定义界面模板生成用户界面模板,继承自定义系统实现框架生成用户系统实现框架,使用所述用户系统实现框架初始化所述用户界面模板,并在初始化时添加自定义控件。

在一较佳的实施方式中,所述系统还包括图片管理器,图片管理器使用哈希表管理图片,以图片路径作为key(关键码),以图片的指针为value(值);当调用图片时,以调用的图片路径为key,查找哈希表获得key对应的value,依据所述value获得图片。

进一步地,所述图片管理器使用哈希表管理图片,以图片路径作为key,以图片的指针为value时进一步用于当以调用的图片路径为key查找哈希表没有检索到所述key时,解码图片路径下的图片,以图片路径作为key,将key对应value存储为解码的图片的指针。

在一较佳的实施方式中,所述自定义系统实现框架还包括界面栈;界面生成模块还用于在生成用户界面后,将生成的用户界面加入用户系统实现框架的界面栈,在显示用户界面时,用户界面从所述界面栈出栈,并显示所述用户界面。

在一较佳的实施方式中,自定义框架模块在基于Symbian系统的控件创建具有预设绘制操作的自定义控件时进一步用于继承Symbian系统的控件类生成自定义类;使自定义类中的绘制方法调用自定义虚函数,所述自定义虚函数中参数为Symbian系统的画布类的对象;继承自定义类生成自定义控件,在所述自定义控件中通过所述参数调用画布类的函数实现所述自定义控件的预设绘制操作。

自定义框架模块在创建包括多个自定义控件的复合控件时进一步用于创建容器类,在容器类中定义一个类型为自定义类的容器,将所述多个自定义控件加入容器中。

进一步地,自定义框架模块在创建包括多个自定义控件的复合控件时进一步用于在复合控件中保存当前拥有焦点的自定义控件的索引值,当焦点切换时,保存的索引值对应改变。

进一步地,自定义框架模块在继承复合控件生成自定义界面模板时进一步用于继承容器类生成界面模板类,该界面模板类为所述自定义界面模板。

进一步地,自定义框架模块还用于在所述自定义界面模板中添加用于管理菜单的菜单控件。

在一较佳的实施方式中,所述通用模块进一步用于生成自定义数据结构中包含的数据成员,所述数据成员的类型为Symbian系统的数据类型或数据结构,按预设要求对所述数据成员进行操作,自定义数据结构具有标准C++接口。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号