本发明专利技术提出了通过Lua使用LVGL开发图形界面的技术方案,用构造的方法将Lua表中的键生成LVGL的各类接口,页面之间以表来封装,每个页面的属性都在不同的表里,使得脚本耦合性大幅降低;业务代码不再冗长,重复率大幅降低,能够灵活地实现UI业务逻辑;增加页面非常简单,设置好页面表的键值就完成了增加页面的基本工作,业务拓展方便;业务的开发效率提高,开发周期缩短,维护方便,适合企业商用。适合企业商用。适合企业商用。
【技术实现步骤摘要】
一种Lua上降低LVGL图形界面耦合性的方法和系统
[0001]本专利技术涉及图形界面开发领域,特别涉及基于Lua语言和LGVL的图形界面开发领域。
技术介绍
[0002]Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua有着轻量级、可拓展性等优势,应用场景有游戏开发、独立脚本开发、Web应用脚本等。
[0003]LVGL(轻巧而多功能的图形库)是一个免费的开放源代码图形库,它提供创建具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI(图形用户界面)所需的一切,LVGL有很多优点,包括有很多功能强大的控件:按钮、图表、页面等;带有动画、抗锯齿、不透明、平滑滚动的高级图形;支持各种设备:触摸板、鼠标、键盘、编码器等。
[0004]耦合性是程序结构中各个模块之间交互的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。降低耦合度即可以理解为解耦。模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。耦合度最低的方法有非直接耦合,指两个模块之间基本没有联系,唯一的联系就是通过共用的调用模块来实现,模块独立性很强;稍弱一些的方法有数据耦合,指调用模块和被调用模块之间只传递简单的数据参数,模块独立性良好;耦合度比较强的方法有外部耦合,一组模块都共同使用同一全局变量,而且对该全局变量没有任何参数传递信息,当程序出现异常时定位问题点较困难。
[0005]在嵌入式领域,UI(用户界面)设计常用的操作系统界面库有很多,例如TouchGFX、AWTK、LVGL等,大部分都是基于C开发的。使用这些操作系统界面库开发界面,普遍存在以下问题:
[0006]1、代码关联性强,耦合性较高,导致业务逻辑之间的关联度比较高,维护优化成本较大,对企业来说性价比较低。
[0007]2、可拓展性较差,增加页面或者添加页面功能需要重写逻辑,开发时上手难度比较高并且开发周期长。
技术实现思路
[0008]本专利技术的技术方案解决的技术问题是:
[0009]1、通过对代码的封装,降低了代码之间的关联性,耦合性较低,使得业务逻辑之间的关联度比较低,维护优化成本较低。
[0010]2、通过建立相应的框架和对代码的封装,提高了界面的拓展性,增加页面或者添加页面功能不再需要重写逻辑,降低了开发难度,并缩短了开发周期。
[0011]第一方面,本专利技术的实施例提出了一种Lua上降低LVGL图形界面耦合性的方法,该方法包括:
[0012]创建页面表,该页面表保存了页面的控件的控件属性的值;该控件包括容器控件、子控件和各类功能控件;该容器控件用于容纳该子控件和该功能控件;该功能控件是通过子控件实现的;该控件属性包括type键和控件设置键;该type键用于表示该控件的类型;该控件设置键用于表示该控件的类型以外的该控件属性;
[0013]当打开该页面时,根据该页面表的内容生成该页面,该生成该页面包括:构造该容器控件;根据该type键的值为“容器”的该控件的该控件属性,设置该容器控件;当该type键的值为该“容器”以外的值时,根据该type键的值构造相应的该功能控件;根据该功能控件的该控件设置键设置该功能控件。
[0014]在一些实施例中,本专利技术提供的一种Lua上降低LVGL图形界面耦合性的方法:
[0015]该子控件能够嵌套,即上一级子控件包含下一级子控件。
[0016]在一些实施例中,本专利技术提供的一种Lua上降低LVGL图形界面耦合性的方法,该方法还包括:
[0017]在目录内添加该页面的页面链接。
[0018]在一些实施例中,本专利技术提供的一种Lua上降低LVGL图形界面耦合性的方法,该方法还包括:
[0019]页面进入任务,该页面进入任务是进入该页面时需要执行的进入页面自定义任务。
[0020]在一些实施例中,本专利技术提供的一种Lua上降低LVGL图形界面耦合性的方法,该方法还包括:
[0021]页面退出任务,该页面退出任务是退出该页面时需要执行的退出页面自定义任务。
[0022]第二方面,本专利技术的实施例提出了一种Lua上降低LVGL图形界面耦合性的系统,该系统包括:
[0023]页面表创建模块,用于创建页面表,该页面表用于保存页面的控件的控件属性的值;该控件包括容器控件、子控件和各类功能控件;该容器控件用于容纳该子控件和该功能控件;该功能控件是通过子控件实现的;该控件属性包括type键和控件设置键;该type键用于表示该控件的类型;该控件设置键用于表示该控件的类型以外的该控件属性;
[0024]页面生成模块,用于当打开该页面时,根据该页面表的内容生成该页面;该页面生成模块包括:控件构造单元,用于根据该type键的值构造该容器控件和各类该功能控件;控件设置单元,用于根据该控件的该控件属性设置该控件。
[0025]在一些实施例中,本专利技术提供的一种Lua上降低LVGL图形界面耦合性的系统:
[0026]该子控件能够嵌套,即上一级子控件包含下一级子控件。
[0027]在一些实施例中,本专利技术提供的一种Lua上降低LVGL图形界面耦合性的系统,该系统还包括:
[0028]目录,用于添加该页面的页面链接。
[0029]在一些实施例中,本专利技术提供的一种Lua上降低LVGL图形界面耦合性的系统,该系统还包括:
[0030]页面进入任务模块,用于在进入该页面时执行进入页面自定义任务。
[0031]在一些实施例中,本专利技术提供的一种Lua上降低LVGL图形界面耦合性的系统,该系
统还包括:
[0032]页面退出任务模块,用于在退出该页面时执行退出页面自定义任务。
[0033]本专利技术的技术方案的有益效果是:
[0034]通过Lua使用LVGL开发图形界面的技术方案,用构造的方法将Lua表中的键生成LVGL的各类接口,页面之间以表来封装,每个页面的属性都在不同的表里,使得脚本耦合性大幅降低;业务代码不再冗长,重复率大幅降低,能够灵活地实现UI业务逻辑;增加页面非常简单,设置好页面表的键值就完成了增加页面的基本工作,业务拓展方便;业务的开发效率提高,开发周期缩短,维护方便,适合企业商用。
附图说明
[0035]图1为本专利技术的Lua上降低LVGL图形界面耦合性的方法的一个具体实施例的图形界面开发流程图。
[0036]图2为本专利技术的Lua上降低LVGL图形界面耦合性的方法的一个具体实施例的页面使用流程图。
[0037]图3为本专利技术的Lua上降低LVGL图形界面耦合性的方法的一个具体实施例的包含子控件的页面的构成图。
具体实施方式
[0038]为了使专利技术实现的技术手段、创造特征、达成目的和功效易于明白了解,下结合具体图示,进一步阐述本专利技术。但本专利技术不仅限于以本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种Lua上降低LVGL图形界面耦合性的方法,其特征在于,所述方法包括:创建页面表,所述页面表保存了页面的控件的控件属性的值;所述控件包括容器控件、子控件和各类功能控件;所述容器控件用于容纳所述子控件和所述功能控件;所述功能控件是通过子控件实现的;所述控件属性包括type键和控件设置键;所述type键用于表示所述控件的类型;所述控件设置键用于表示所述控件的类型以外的所述控件属性;当打开所述页面时,根据所述页面表的内容生成所述页面,所述生成所述页面包括:构造所述容器控件;根据所述type键的值为“容器”的所述控件的所述控件属性,设置所述容器控件;当所述type键的值为所述“容器”以外的值时,根据所述type键的值构造相应的所述功能控件;根据所述功能控件的所述控件设置键设置所述功能控件。2.根据权利要求1所述的方法,其特征在于:所述子控件能够嵌套,即上一级子控件包含下一级子控件。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:在目录内添加所述页面的页面链接。4.根据权利要求1
‑
3任一项所述的方法,其特征在于,所述方法还包括:页面进入任务,所述页面进入任务是进入所述页面时需要执行的进入页面自定义任务。5.根据权利要求1
‑
3任一项所述的方法,其特征在于,所述方法还包括:页面退出任务,所述页面退出任务是退出所述...
【专利技术属性】
技术研发人员:伍珈沁,曲振,
申请(专利权)人:上海合宙通信科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。