开源项目预告&Demo演示:应用极其简单的多级GUI库

    之前在做项目的时候,需要用到多级GUI,当时使用的是用数组穷举列出来各个界面的方式(也有人管它叫索引法),缺点也是很多的,比如开发繁琐,维护不便,难以添加过渡动画,各个界面是定死的,扩展性不强……并且从严格意义上而言,这个方式只能算作实现多级菜单的伪GUI,而像emWin,LVGL等又太复杂占用太大,并且对各个界面的管理不是很方便,所以就有了开发一个优雅好用的跨平台GUI框架的念头,现在已经基本完成,还剩一些小细节和注释就可以开源出来,下面简单介绍一下

一,设计目标:

        实现动态创建,删除菜单项(即通过封装好的函数实时操作菜单项),添加过渡动画,控制资源占用,无限制的菜单扩展,支持实时添加菜单项,便于移植到各种平台

二,设计思路:

        一提到无限级扩展,我第一个想到的是用链表,所以我定义了三个结构体,分别负责菜单,应用,按键。为了避免错误的关系处理导致GUI进入死循环,我将其封装成了函数,可以自动处理关系,并定义了一个 ROOT项,这样可以避免错误的操作并简化主程序中的操作

        对于菜单结构体,里面包含了菜单名称、父目录、子目录链表的首位、前级、后级、应用链表的首位,用一个图来展示:

        然后就是设计过渡动画了,对于每个子目录项的选择,我使用了PID动画,对于页之间的过渡,我使用了虚化效果,在后面的Demo演示中会展现。

        另外,如何实现跨平台呢?我这里是采用了逻辑和图形分离的方式,即提供一个GraphicsAPI,在GUI库中调用,开发者只需要根据需求改写GraphicsAPI就可以实现跨平台(理论上在Windows等操作系统上也可以用,只是没必要)。

三,命名:

        这个GUI库我将其命名为SXGUI,SX的含义一个是我的网名缩写,另一个是 Simple.X的意思,代表让它的简单易用的初衷。

四,当前进度&Demo程序演示:

进度:

        目前已经完成了GUI部分的开发,正在完善GraphicsAPI、降低改写难度以及图形库的兼容性优化(我用的平台是STM32F401RCT6,0.96寸OLED,开源出来的文件会自带我的OLED图形库和写好的GraphicsAPI)

Demo演示:

        使用Keil5优化等级 O3未开启微库

SXGUI库Demo演示

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值