1、简介
在学习LVGL应用开发过程中,为UI控件定制用户响应事件是经常遇到的。以下使用纯代码的方式创建屏幕触控开关,当用户按下触控按钮后,完成板载LED小灯的点亮、关闭。
2、开发环境、所用开发板
MDK Keil,STM32L4-discovery
3、代码说明
3.1 LED点亮按钮控件btn
static void lv_btn_on(void) { lv_obj_t* btn = lv_btn_create(lv_scr_act());//创建按键对象 lv_obj_set_pos(btn, 60, 60-10); //按键坐标 lv_obj_set_size(btn, 120, 50); lv_obj_t* label = lv_label_create(btn); lv_label_set_text(label, "LED_ON"); lv_obj_center(label); lv_obj_set_style_bg_color(btn, lv_color_hex(0xFF0000), LV_STATE_PRESSED); //按键按下后UI控件颜色改变 lv_obj_add_event_cb(btn, LED_ON_event_cb,LV_EVENT_CLICKED, NULL);//为btn注册点击事件 }
为btn点击事件创建回调函数
static void LED_ON_event_cb(lv_event_t * event) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_RESET);//点亮LED }
3.2 LED关闭按钮控件btn
按钮控件btn创建与点亮控件基本相同,但回调函数是LED_OFF_event_cb
static void lv_btn_off(void) { lv_obj_t* btn = lv_btn_create(lv_scr_act()); lv_obj_set_pos(btn, 60, 130+10); lv_obj_set_size(btn, 120, 50); lv_obj_t* label = lv_label_create(btn); lv_label_set_text(label, "LED_OFF"); lv_obj_center(label); lv_obj_set_style_bg_color(btn, lv_color_hex(0x00FF00), LV_STATE_PRESSED); lv_obj_add_event_cb(btn, LED_OFF_event_cb,LV_EVENT_CLICKED, NULL); }
为btn点击事件创建回调函数
static void LED_OFF_event_cb(lv_event_t * event) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_SET); //关闭LED }
3.3 lv控件初始化
lv_init();//lvgl控件初始化 lv_port_disp_init();//显示设备初始化 lv_port_indev_init();//触控设备初始化 lv_btn_on();//点灯控件初始化 lv_btn_off();
4、运行效果
可以看到当触控按钮按下后,点灯、关灯操作得到执行