在上一讲我们讲解了按键回调函数的自定义函数的用法,这一讲继续讲解回调函数的另一种用法。
首先我们将上一讲做好的按键名称以及自定义回调事件中的按键名称修改,改为默认模式为“open”当点击按键时进入回调函数将按键名称改为“close”,具体如下图所示:
然后按照上一讲的讲解找到自定义函数,将opoen修改为close,具体如下图所示:
然后在左侧的工具栏中选择led控件,添加到按键的正上方放大,并且修改默认颜色为黑色。
右键按键控件选择事件添加,在事件添加中点击clicked信号右侧的加号添加需要绑定的事件。
在触发事件中选择需要做出回应的对象,这里我们点击led_1控件,点击确认。
点击clicked信号右上角的if按键,在弹出的弹窗中点击加号,在if右侧的条件栏填写“flag_btnflase”,点击确认。Flag_btn在上一讲代码中用来判断按键的状态,false表示当前已经按下,true表示当前按键未被按下。
然后点击led_1左侧的加号,添加触发的条件限制“flag_btnfalse”,在右侧加号中选择改控件要做出的反应,在这里我们选择色彩修改为黄色,模拟当按键按下后灯泡亮起。
最后我们根据之前的操作,为else条件添加led_1控件变黑的动作。
到此为止,模拟按键打开灯泡的demo就做好了,以下是回调事件中的代码:
static void screen_btn_1_event_handler (lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
switch (code) {
case LV_EVENT_CLICKED:
{
//控制按键字体的变化
btn_clicked();
if (flag_btn==false) {
//改变led_1为黄色
lv_led_set_color(guider_ui.screen_led_1, lv_color_hex(0xeff316));
} else {
//改变led_1为黑色
lv_led_set_color(guider_ui.screen_led_1, lv_color_hex(0x000000));
}
break;
}
default:
break;
}
}
以下是led控件的相关函数:
//基于父控件创建led_1控件
ui->screen_led_1 = lv_led_create(ui->screen);
//控制led_1的亮度,亮度范围为0~255
lv_led_set_brightness(ui->screen_led_1, 255);
//设置led_1的颜色为黑色
lv_led_set_color(ui->screen_led_1, lv_color_hex(0x000000));
//设置led_1的位置及其大小
lv_obj_set_pos(ui->screen_led_1, 128, 100);
lv_obj_set_size(ui->screen_led_1, 214, 220);
以下是led相关函数,具体使用请查看适合版本的官方手册。
• lv_led_create: 创建 LED 控件。
• lv_led_set_on: 设置 LED 是否点亮。
• lv_led_set_color: 设置 LED 的颜色。
• lv_led_set_brightness: 设置 LED 的亮度。
• lv_led_get_color: 获取 LED 的颜色。
• lv_led_get_brightness: 获取 LED 的亮度。
• lv_led_set_style: 设置 LED 的样式。
下一期我们将讲其他控件的基础使用。
第五讲视频
本文章由威三学社出品
对课程感兴趣可以私信联系