前言

本节简单介绍 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 提供了大量能使我们快速便捷地开发图形界面的函数和方法。