威三电子  

               威三电子

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四讲)

2026-05-28 11:26:16

浏览:

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四讲)上一讲实现了btn按键的创建以及一些相关函数的说明,这次继续讲解btn按键的回调函数如何使

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四讲)

上一讲实现了btn按键的创建以及一些相关函数的说明,这次继续讲解btn按键的回调函数如何使用。

1)创建事件

使用GUI_guider打开上次的项目,将btn名字命名为close,使用鼠标右键点击该控件在***下方点击事件添加,具体操作如下图所示:


 

2)选择触发信号

点击事件添加后会在界面的***下方出现按键以及其对应的信号,我们需要的信号是点击(clicked)。

以下是对信号的说明:

Clicked: 如果没有被滚动,在释放时被调用(与长按无关)。

Short Clicked: 对象被按下一小段时间,然后释放。如果被滚动,则不会被调用。

Pressed: 对象已被按下。

Pressing: 对象正在被按下(在按下期间持续调用)。

Press Lost: 对象仍在被按下,但滑动光标/手指离开对象。

Released: 在任何对象释放时被调用。

Value Changed: 对象的值已更改(例如,滑块移动)。

Long Pressed: 对象至少被按下`long_press_time`。如果被滚动,则不会被调用。

Long Pressed Repeat: 在每`long_press_repeat_time`(长按重复时间)毫秒后,调用一次。如果被滚动,则不会被调用。

Scroll: 滚动中。

Scroll Begin: 滚动开始。事件参数是滚动动画的指针,可以被修改。

Scroll End: 滚动结束。

Focused:  对象获得焦点。

Defocused:  对象失去焦点。

Leave: 输入设备离开对象上方的悬停状态。

Hit Test: 执行高级点击测试。

Key: 将键发送给对象,用lv_indev_get_key(lv_indev_active());获取键值。

 

 

3)选择回调函数

在选择完信号之后,选择信号相应后应该做出什么反应,这里我们选择Custom code自定义回调函数,以下是具体的回调:

Freemaster: 通常是指与 FreeMaster 调试工具相关的回调函数。

Custom code: 指的是自定义的回调函数。

Load screen: 指的是界面跳转的回调。

Screen: 指的是当前界面的回调。

Btn_1: 指的是当前控件的回调。


 

4)自定义回调

点击custom code“…”打开代码框,该软件提供俩个语言的开发,分别是C语言与Python,这里我们选择C语言。数字“1”部分是指全局变量的声明,数字“2”部分指的是信号出发要执行的函数代码。具体如下图所示:

 

具体函数如下:

//静态全局变量控制按键是否被按下

static bool flag_btn=true;

void btn_clicked()

{

    if(flag_btn)

{

//边框变红

        lv_obj_set_style_border_color(guider_ui.screen_btn_1, lv_color_hex(0xff0000), LV_PART_MAIN|LV_STATE_DEFAULT);

//文字变红

        lv_obj_set_style_text_color(guider_ui.screen_btn_1, lv_color_hex(0xff0000), LV_PART_MAIN|LV_STATE_DEFAULT);

//改变文本

        lv_label_set_text(guider_ui.screen_btn_1_label, 'open');

//修改标识

        flag_btn=false;

    }

    else

{

//恢复默认边框

        lv_obj_set_style_border_color(guider_ui.screen_btn_1, lv_color_hex(0x5482a9), LV_PART_MAIN|LV_STATE_DEFAULT);

//恢复文本颜色

        lv_obj_set_style_text_color(guider_ui.screen_btn_1, lv_color_hex(0x12548b), LV_PART_MAIN|LV_STATE_DEFAULT);

//恢复文本

        lv_label_set_text(guider_ui.screen_btn_1_label, 'close');

//恢复标识

        flag_btn=true;

    }

}

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();

        break;

    }

    default:

        break;

    }

}

void events_init_screen (lv_ui *ui)

{

//回调函数的声明

    lv_obj_add_event_cb(ui->screen_btn_1, screen_btn_1_event_handler, LV_EVENT_ALL, ui);

}

void events_init(lv_ui *ui)

{

 

}

下一讲将讲解按键回调的其他使用,以及一些常见的函数。

本文章由威三学院出品

对课程感兴趣可以联系我们

0
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四讲)
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四讲)上一讲实现了btn按键的创建以及一些相关函数的说明,这次继续讲解btn按键的回调函数如何使
长按图片保存/分享

北京威三电子科技有限公司

突破技术壁垒,芯创智联领航未来

 


北京威三电子科技有限公司 版权所有
京ICP备2026012969号
 

热线:

159-2199-9232

 

图片展示

淘宝店铺:

威三科教

地址:

北京市延庆区辰龙国际6号楼406室

微信公众号:

北京威三电子科技有限公司 

热线:159-2199-9232

淘宝店铺:威三科教

地址:北京市延庆区辰龙国际6号楼406


微信公众号

图片展示
北京威三电子科技有限公司 版权所有| 京ICP备2026012969号
微信公众号
客服中心
热线电话
15921999232
上班时间
周一到周五
二维码
扫码关注
客服中心
热线电话
15921999232
上班时间
周一到周五
二维码
扫码关注
添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功!
添加微信好友,详细了解产品
我知道了