LVGL对象刷新

通过函数lv_obj_invalidate(OBJ)可以刷新对象OBJ的显示。

但是实际使用过程中却会存在问题。

使用PC模拟器能正常刷新的对象,在板子上就会非常卡。

这个应该是跟LVGL的刷新机制有关。

LVGL内核会把需要刷新的对象放在链表里遍历刷新,理论上应该都能刷新到。但实际使用中就是有些对象刷不出来(实际上刷了,但是有残影)。

举个例子:

1 PANEL = lv_obj_create(lv_scr_act());
2 btn = lv_btn_create(PANEL);
3 label = lv_label_create(btn);

上面的label距离屏幕就2层,但是如果直接刷新label 很可能会刷不出来。距离屏幕层级越远,刷新越有可能出问题。

lv_obj_invalidate(label);

所以这里我们就要去刷新btn,或者干脆点直接刷新PANEL整个屏幕页面;

posted @ 2022-03-08 14:43  xjxcxjx  阅读(4344)  评论(0编辑  收藏  举报