前言
本节简单介绍 LVGL 基本开发过程。
一、基础控件
LVGL 包含 30 多个常用控件。
控件创建函数的返回值是对象指针类型。
创建控件方式:
- 基于当前屏幕创建:lv_scr_act()
- 基于父控件创建:parent_obj
1.基于当前屏幕,创建控件
创建一个按钮:
lv_obj_t * btn1 = lv_btn_create(lv_scr_act(), NULL);
设置尺寸:
lv_obj_set_size(btn1, 50, 25);
对齐方式:
lv_obj_align(btn1, NULL, LV_ALIGN_CENTER, 0, -40);
2.基于当前父控件,创建控件
创建按钮文本:
lv_obj_t * label = lv_label_create(btn1, NULL);
设置文本内容:
lv_label_set_text(label, "Button");
二、关联事件
设置事件入口(拟中断)
static void event_handler(lv_obj_t * obj, lv_event_t event)
{
if(event == LV_EVENT_CLICKED) {
printf("Clicked\n");
}
else if(event == LV_EVENT_VALUE_CHANGED) {
printf("Toggled\n");
}
}
事件关联
lv_obj_set_event_cb(btn1, event_handler);
三、按键识别
LV_EVENT_KEY:键盘特有事件,通过 uint32_t * key = lv_event_get_data() 获取键值。
static void event_handler(lv_obj_t * obj, lv_event_t event)
{
if(e == LV_EVENT_KEY)
{
const uint32_t * key = lv_event_get_data();
switch (*key)
{
case LV_KEY_RIGHT:
break;
……
case LV_KEY_ESC:
break;
default:
break;
}
}
}
四、页面切换
为了防止内存泄漏,需要释放当前页面所有控件,再跳转到新页面。
static void event_handler(lv_obj_t * obj, lv_event_t event)
{
if(e == LV_EVENT_CLICKED)
{
lv_obj_del(lv_obj_get_parent(obj));
lv_arcm500_ui.page_1[RUN_PAGE]();
}
}
五、开启监控
显示如图信息,需要在 lv_conf_template.h 文件中,使能监控:
/*1: Show CPU usage and FPS count in the right bottom corner*/
#define LV_USE_PERF_MONITOR 1
总结
简单介绍了 LVGL 控件应用的开发,而 LVGL 提供了大量能使我们快速便捷地开发图形界面的函数和方法。