探究Lv_group

1 lv_group的作用

在LittlevGL的全局设置中可以看到(如下图),lv_group是keyboards的扩展功能。

2 效果

在演示程序中可以看到,通过“Next”按键可以控制群对象中的对象之间的切换,类似于电脑上的“Tab键”控制窗口上的菜单之间的切换


3 实现过程

可以在演示程序的主初始化模块中看到其创建了一个群对象

并且在群对象中加入了子对象

以此实现了多个子对象组件成了群对象

4 程序

下面是群对象的结构体,可以看到第一个就是预先定义的链表结构体

通过lv_group群对象创建的源代码可以知道,首先使用了群对象的结构体大小在内存中申请了一部分空间,并且使用群对象结构体中的链表结构体的指针做头结点初始化了一个新的双向链表。

而在群对象中添加子对象的做法是在一个双向链表的尾部创建一个节点,并且将子对象的指针赋给这个节点。如果当前的结点的后继与当前链表的第一个节点的指针相同,则说明只有一个结点,同时使用lv_group_focus_next()在当前节点的后继创建临时的指针,待下一个子对象的指针的值赋给它。

这个双向链表的尾部创建一个节点,同样的还有lv_ll_ins_head() ,即在双向链表的头部创建一个结点,与下列代码大致相似。

这个是将当前的焦点转移到双向链表的下一个结点。

这样一来,群对象相当与一个链表,各个子对象相当于结点,随意切换到当前子对象的上一个或者下一个子对象都很方便。

文章作者: Sirius65535
文章链接: http://sirius.ink/2018/04/15/探究lv_group文件/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sirius' Notes