news 2026/8/28 23:38:57

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十四讲)

这一期讲解的控件是时钟控件,dclock 是 LVGL 库中的一个组件,用于创建模拟时钟时用来用数字显示当前的时间。

• 显示当前时间:时钟控件可以显示当前的小时和分钟。
• 自定义外观:开发人员可以自定义时钟控件的外观,包括字体、颜色、背景等。
• 动态更新:时钟控件可以根据实时时间进行动态更新,显示当前时间。
• 事件处理:时钟控件可以处理用户交互事件,例如点击或按压事件。

如上图所示,在GUI_guider中使用控件拖拽的方式在右侧的属性列表中,使用特定参数控制数字时钟的时间、颜色、位置大小以及主题等设置。

以下是实现的代码:

//全局变量
int screen_1_digital_clock_1_min_value = 25;
int screen_1_digital_clock_1_hour_value = 11;
int screen_1_digital_clock_1_sec_value = 50;
char screen_1_digital_clock_1_meridiem[] = “AM”;

//Write codes screen_1_digital_clock_1
//静态布尔变量,用于标记定时器是否已启用
static bool screen_1_digital_clock_1_timer_enabled = false;
//创建数字时钟控件
ui->screen_1_digital_clock_1 = lv_dclock_create(ui->screen_1, “11:25:50 AM”);
//创建并启用定时器
if (!screen_1_digital_clock_1_timer_enabled) {
lv_timer_create(screen_1_digital_clock_1_timer, 1000, NULL);
screen_1_digital_clock_1_timer_enabled = true;
}
//设置位置以及大小
lv_obj_set_pos(ui->screen_1_digital_clock_1, 185, 186);
lv_obj_set_size(ui->screen_1_digital_clock_1, 130, 36);

//Write style for screen_1_digital_clock_1, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
//设置圆角半径为0
lv_obj_set_style_radius(ui->screen_1_digital_clock_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置文字颜色为#FFFFFF白色
lv_obj_set_style_text_color(ui->screen_1_digital_clock_1, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
//使用 Montserrat Medium 16号字体
lv_obj_set_style_text_font(ui->screen_1_digital_clock_1, &lv_font_montserratMedium_16, LV_PART_MAIN|LV_STATE_DEFAULT);
//文字不透明度255
lv_obj_set_style_text_opa(ui->screen_1_digital_clock_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
//字间距为0
lv_obj_set_style_text_letter_space(ui->screen_1_digital_clock_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
//文字对齐
lv_obj_set_style_text_align(ui->screen_1_digital_clock_1, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN|LV_STATE_DEFAULT);
//背景不透明度255
lv_obj_set_style_bg_opa(ui->screen_1_digital_clock_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
//背景颜色蓝色#2195f6
lv_obj_set_style_bg_color(ui->screen_1_digital_clock_1, lv_color_hex(0x2195f6), LV_PART_MAIN|LV_STATE_DEFAULT);
//无渐变效果
lv_obj_set_style_bg_grad_dir(ui->screen_1_digital_clock_1, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
//上内边距:7px 右、下、左内边距:0px
lv_obj_set_style_pad_top(ui->screen_1_digital_clock_1, 7, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui->screen_1_digital_clock_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_bottom(ui->screen_1_digital_clock_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_left(ui->screen_1_digital_clock_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
//阴影宽度为0(无阴影)
lv_obj_set_style_shadow_width(ui->screen_1_digital_clock_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
本文章由威三学社出品
对课程感兴趣可以私信联系

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 23:27:16

智能重构新范式:AI如何破解Java遗留系统改造难题

在企业数字化转型进程中,Java遗留系统的现代化改造始终是技术团队面临的重要挑战。传统重构过程中,开发人员需要应对代码结构复杂、文档缺失、技术债务累积等多重障碍,这些因素显著增加了项目风险和开发成本。遗留系统重构的核心挑战技术债务…

作者头像 李华
网站建设 2026/8/29 3:30:15

渲染引擎多线程优化避坑指南(资深架构师亲授10年踩坑经验)

第一章:渲染引擎多线程优化的挑战与现状现代图形应用对实时性和性能的要求日益提升,渲染引擎作为核心组件,其多线程优化成为关键技术瓶颈。随着硬件多核架构的普及,传统单线程渲染模式已无法充分利用计算资源,导致CPU利…

作者头像 李华
网站建设 2026/8/26 5:27:46

【系统级编程必修课】:深入理解内存布局的7个关键维度

第一章:内存布局精确控制在系统级编程中,内存布局的精确控制是优化性能与确保硬件兼容性的关键。尤其是在操作系统开发、嵌入式系统或高性能计算场景中,开发者需要直接干预数据在内存中的排列方式,以满足对齐要求、减少缓存行冲突…

作者头像 李华
网站建设 2026/8/21 11:58:57

网工私活 2 万碾压月薪 1.5 万!同事劝我辞职单干

网工接私活竟比工资还高?工资1.5万,私活2万!同事:辞职干票大的! 小编作为一名在职的网络安全工程师行业的小小一员,在平时的工作中洞察到一线技术工程师其实还是有很多机会和时间去做一下私活。加上最近就…

作者头像 李华
网站建设 2026/8/24 8:37:57

4000余份数字化资料合集:AI大模型及行业应用方案、企业数字化、数据中台、数据要素、数据资产、数据治理、数字化转型、IT信息化

(AI大模型及行业应用方案、企业数字化、数据中台、数据要素、数据资产、数据治理、数字化转型、IT信息化、行业数字化方案及报告等)层次一:底层基石与生产要素这是数字世界的“石油”和“土地”。数据要素: 最根本的认知革命。这是…

作者头像 李华
网站建设 2026/8/21 11:57:29

【std::future链式组合进阶指南】:掌握高效异步编程的5大核心技巧

第一章:std::future链式组合进阶指南在现代C并发编程中,std::future 提供了一种异步获取计算结果的机制。然而,当多个异步任务需要按特定顺序执行或依赖前一个任务的结果时,简单的等待机制将难以满足需求。此时,链式组…

作者头像 李华