威三电子  

               威三电子

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

2026-07-23 09:31:03

浏览:

首先在上期讲解代码的文件中添加全局变量以及俩个回调函数,在GUI guider中不提供可视化的添加回调,以下是使用声明回调函数的方法:lv_calendar_d


        

首先在上期讲解代码的文件中添加全局变量以及俩个回调函数,在GUI guider中不提供可视化的添加回调,以下是使用声明回调函数的方法:

lv_calendar_date_t screen_6_calendar_1_today;

lv_calendar_date_t screen_6_calendar_1_highlihted_days[1];

 

void screen_6_calendar_1_draw_part_begin_event_cb(lv_event_t *e) {

    lv_obj_draw_part_dsc_t *dsc = lv_event_get_draw_part_dsc(e);

if (dsc->part == LV_PART_ITEMS) {  

// 针对日期格子

        lv_calendar_date_t date;

        lv_calendar_get_pressed_date(guider_ui.screen_6_calendar_1, &date);

        if (date.day == dsc->id && date.month ==date.month) {

// 高亮当天

            dsc->rect_dsc->bg_color = lv_color_hex(0xFF0000);          }

    }

}

 

//设置高亮的回调函数

void screen_6_calendar_1_event_handler(lv_event_t *e) {

    lv_event_code_t code = lv_event_get_code(e);

if (code == LV_EVENT_VALUE_CHANGED) {  

// 日期被点击

        lv_calendar_date_t date;

        lv_calendar_get_pressed_date(guider_ui.screen_6_calendar_1, &date);

//设置高亮的日期

        screen_6_calendar_1_highlihted_days[0].year =  date.year;

        screen_6_calendar_1_highlihted_days[0].month = date.month;

        screen_6_calendar_1_highlihted_days[0].day = date.day;

        lv_calendar_set_highlighted_dates(guider_ui.screen_6_calendar_1, screen_6_calendar_1_highlihted_days, 1);

    }

}

 

以上两个函数的作用是将用户点击的日期高亮的显示出来。

 

 


 

以下是回调函数的效果图,29为未点击前的日期,28为点击后的日期效果为高亮效果:

 

16

 

如上图所示,日期边框为蓝色的日期是用户点击后的高亮状态,日期中被颜色填充的日期是指的是当前在用户为点击28日时,今天的日期。

 

 

***在代码中添加回调函数的声明,以及日历大小的设置,具体代码如下图所示:

 

//设置回调函数

lv_obj_t*screen_6_calendar_1_header=lv_calendar_header_arrow_create(ui->screen_6_calendar_1);

 

lv_calendar_t*screen_6_calendar_1=(lv_calendar_t*)ui->screen_6_calendar_1;

 

lv_obj_add_event_cb(screen_6_calendar_1->btnm,screen_6_calendar_1_draw_part_begin_event_cb, LV_EVENT_DRAW_PART_BEGIN, NULL);

 

lv_obj_add_event_cb(ui->screen_6_calendar_1,screen_6_calendar_1_event_handler, LV_EVENT_ALL, NULL);

//设置日历大小以及位置

            lv_obj_set_pos(ui->screen_6_calendar_1, 100, -280);

            lv_obj_set_size(ui->screen_6_calendar_1, 280, 210);

 

 

 

以下是官方手册中提供的用法,这里就不进行一一讲解:

 

下一期将讲解其他控件的基础使用。


本文章由威三学院出品

对课程感兴趣可以私信联系

0
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十六讲)
首先在上期讲解代码的文件中添加全局变量以及俩个回调函数,在GUI guider中不提供可视化的添加回调,以下是使用声明回调函数的方法:lv_calendar_d
长按图片保存/分享

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

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

 


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

热线:

159-2199-9232

 

图片展示

淘宝店铺:

威三科教

地址:

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

微信公众号:

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

热线:159-2199-9232

淘宝店铺:威三科教

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


微信公众号

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