在学习LVGL时,看到官方的例程中有一个菜单界面,源码是:Complex Menu里面可以设置一些内容,如下所示:

完善LVGL的例程_LVGL

可以看到有一个Display选项,里面可以设置亮度但是滑动滑块,并没有什么效果,那么有没有一种可能,我们可以实现这个效果呢,话不多说,直接开始实践。

完善LVGL的例程_LVGL_02

其实一开始,我是想用LED来实现的,因为LED可以直接设置亮度,但我发现我把菜单以LED为父组件创建后,控制LED的亮度并不能一并控制菜单的亮度,无奈放弃。尝试继续摸索,后来想到,可以换一个角度,不是控制亮度,而是控制背景颜色,实现亮度调节,发现可行,于是修改源代码。

控件修改:

将菜单指针修改为全局变量,以及将每一个sectio组件都升级为全局变量,方便在回调函数里面对其修改。

函数修改:

1.由于是控制滑块实现亮度的控制,所以滑块的指针必须保留住,方便写回调函数,修改create_slider函数,其返回值改为slider,从而返回滑块:

完善LVGL的例程_LVGL_03

2.添加回调函数,实现亮度调节:

lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, menu);

完善LVGL的例程_LVGL_04

效果如下:

完善LVGL的例程_LVGL_05