一种智能终端菜单主题GUI引擎实现方法与流程

文档序号:11250633阅读:509来源:国知局
一种智能终端菜单主题GUI引擎实现方法与流程

本发明涉及智能智能终端技术领域,尤其涉及一种智能终端菜单主题gui引擎实现方法。



背景技术:

随着智能硬件价格越来越低廉的智能终端的市场规模呈现出爆炸式的增长趋势。单一风格的操作菜单已经难以满足用户群体广阔的市场需求,如何将功能相同的智能终端产品迅速适用不同国籍、不同文化背景、不同年龄层次等等的用户群体操作习惯和色彩认同,就成为我们研发的关键。

传统技术智能终端的菜单主题往往和系统固件高度集成,用户想更换菜单的主题就必须进行系统升级或更换,操作麻烦并且有一定系统更新失败的风险,容易造成机器损坏甚至机器报废。

同一款产品平移到不同市场时,由于用户群体间文化习惯不同,需要重新定制菜单的风格、主色调、样式等,传统技术通常需要重构ui部分,开发周期长,非常不利于迅速占领市场。



技术实现要素:

本发明针对现有技术中的不足,提供一种智能终端菜单主题gui引擎实现方法。

为了解决上述技术问题,本发明通过下述技术方案得以解决:

一种智能终端菜单主题gui引擎实现方法,包括如下步骤:

(1)主程序启动;

(2)加载主题资源数据包;

(3)解析菜单拓扑结构;

(4)当app需打开某个窗口时,从配置表读取该窗口配置信息;

(5)根据窗口的类型和参数调用gui系统抽象层创建窗口并设置回调;

(6)gui抽象层调用系统图形引擎绘制osd图层;

(7)将osd图层和视频层混合并送显示器。

进一步地,步骤(2)中的数据包是gui系统中ui资源与交互逻辑设计两个数据的整合,用户在更换主题皮肤同时也能更换交互方式。

进一步地,步骤(3)中,菜单拓扑结构为菜单窗口id的id树,避免每次打开窗口都要重新解析配置表,以此加快窗口在打开过程中ui资源定位速度从而提升ui响应速度。

进一步地,步骤(4)中,从配置表读取该窗口配置信息,包括图片、控件、尺寸、rgb、回调函数id及其参数数据。

进一步地,步骤(4)中,窗口配置信息包括ui皮肤资源及回调函数id两部分,每个回调函数的实现都预制在app中,每个id都映射一个功能函数,app在运行过程跟据id加载对应的callback函数指针,所有回调函数类型统一,应用层通过实现get_func_by_id从id-func映射表中获得对应功能函数的指针。

进一步地,步骤(5)中,gui抽象层对所有窗口、控件等ui部件定义以及封装,定义内容包括窗口内部事件触发时序、外部事件触发条件以及内外部事件间的联系,ui抽象层向应用层提供窗口、控件的创建、管理、隐藏、销毁等全生命周期的方法封装,gui需要依赖系统层提供在图层上画点、线、着色等基础能力。

进一步地,步骤(6)、(7)中,gui抽象层根据上层应用事件的触发,将所有绘图任务通过调用系统底层图形引擎绘制到osd图层缓存中,最后和视频层图层(osd根据alpha值叠加在视频层之上)混合并送入显存。

在本发明的智能终端菜单主题gui引擎实现方法中,针对智能终端菜单ui的特殊使用场景,抽象出gui层,将菜单中的所有常用控件(如:下拉条、列表、按钮、日历等等)抽象出模型并高度封装。应用ui开发人员只需要关注视图内的交互逻辑设计,视图的效果由gui引擎根据ui资源文件自动完成渲染,从而大大缩短智能终端应用的开发周期。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

附图1是本发明的主思路框图;

附图2是本发明的窗口渲染流程图;

附图3是本发明的消息处理时序图;

附图4是本发明窗口打开流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见附图1,可用于智能终端个性化菜单主题的gui引擎的实现方法,主要用于高度分离智能终端应用的控制与视图设计,包括如下步骤:主程序启动s1,加载主题资源数据包s2,解析菜单拓扑结构s3,从配置表读取该窗口配置信息s4,根据窗口的类型和参数调用gui系统抽象层创建窗口并设置回调s5,gui抽象层调用系统图形引擎绘制osd图层s6,将osd图层和视频层混合并送显示器s7。

智能终端开机进入主程序之后参考附图4,读取并解析主配置xml文件。配置文件包含该款产品所有可见视图的ui资源信息。每个视图由主窗口、控件、消息框等组成。每个控件id根据方位以主窗口为根以树形数据结构存储。每个窗口的属性以key-value的数据结构存储。定义根视图id为1001,读取跟视图数,创建主窗口及控件,根据回调id设置根视图的自定义消息响应函数,渲染根视图,进入事件循环。

进入视图渲染函数后(参见附图2),

1.首先清除osd图层;

2.主窗口根据大小、形状、背景色等属性绘制主窗口。如果背景是整张图片则调用底层图片解析库将图片bitmap数据解析至osd图层。

3.从主窗口句柄中,找到与之关联的控件依次绘制控件到osd图层。如果控件alpha值与主窗口不一致则以主窗口为准。

4.将osd图层与视频层混合送显。

窗口打开后,用户按键操作或者系统发送消息到事件分发函数(参考附图3),则消息按如下时序处理:

1.首先,事件分发器将消息发送至活动窗口注册的自定义事件处理函数,此函数如果处理了该消息并且希望消息继续向下传递则返回0,不向下传递返回-1。

2.当自定义返回为0时,gui系统自动调用主窗口默认函数处理。

3.如果主窗口默认处理也返回0时,gui系统自动调用焦点所在控件的默认处理函数。

4.最后逐级返回至消息分发函数。

主窗口及控件的封装方法:

定义它们的公共属性:左顶点横坐标(x)、左顶点纵坐标(y)、宽(width)、高(height)、水平边框宽度(bwh)、垂直边框宽度(bwv)、背景填充图片id(bgpid)、背景填充模式(bgfm)、标题填充图片id(tpid)、标题填充模式(tpfm)、标题高度(title_height)、背景色rgb值(bg_color)、标题rgb值(title_color)、标题文字(title)、字体大小(font_size)、字体颜色(font_color)、透明度(alpha)、事件处理函数指针(call_back)。

主窗口特有属性:控件列表(subwnd_list)、是否为模态窗口(is_model)、是否需要重绘(is_redraw)。

控件公共属性:控件类型(type)、控件数据列表(data_list)、是否能获得焦点(is_able)、是否获得焦点(is_active)、焦点填图(focus_bg_pic)、焦点填充背景色(focus_bg_color)、焦点文字颜色(focus_font_color)、disable后的背景填图(disable_bg_pic)、disable后的背景色(disable_bg_color)、disable后文字颜色(disable_font_color)。

列表控件特有属性:滑动条宽(slider_width)、滑动条图标(slider_icon)、滑动条底框图标(slider_bg_icon)、是否有水平滑动条(bhslider)、是否有垂直滑动条(bvslider)。

表格控件特有属性:行数(nrow),列数(ncolumn)、滑动条宽(slider_width)、滑动条图标(slider_icon)、滑动条底框图标(slider_bg_icon)、是否有水平滑动条(bhslider)、是否有垂直滑动条(bvslider)。

其他按钮、编辑框、静态文本框、下拉框等于其他gui封装方法相同。

月历控件实际是由以上控件组合而成的一个特殊窗口,其本质是窗口,另外,在其退出时会向父窗口传递当前的“yyyy-mm-dd”数据。其特有属性有:向左翻页按钮图标(left_page_icon)、向右翻页按钮图标(right_page_icon)、按钮的宽(btn_width)、按钮的高(btn_height)。

应该理解,尽管参考其示例性的实施方案,已经对本发明进行具体地显示和描述,但是本领域的普通技术人员应该理解,在不背离由权利要求书所定义的本发明的精神和范围的条件下,可以在其中进行各种形式和细节的变化,可以进行各种实施方案的任意组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1