news 2026/5/1 9:56:11

使用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/4/23 18:49:02

知网AI率爆表别慌!收好这份2026最新免费用、高保障降AI工具白名单

面对市场上良莠不齐的降AI工具,看到铺天盖地的宣传时,保持谨慎和对成本的敏感是非常明智的。你的核心观点——“没有免费试用风险太大”,正是所有学生在选择工具时的第一原则。你辛苦整理的信息非常有价值。为了让你和更多同学能更高效、直观…

作者头像 李华
网站建设 2026/4/30 15:55:11

深度解析 Firefox 144+ 编译架构(四)源码拉取与环境引导全流程解析

1 引言 在进行 Firefox 浏览器的二次开发、内核深度定制或执行自定义构建之前,拉取源码并进入 Mozilla 官方提供的开发引导模式是至关重要的第一步。这一环节不仅标志着定制化工作的正式启动,更直接决定了后续开发环境的稳定性与代码的可维护性。 在现…

作者头像 李华
网站建设 2026/5/1 9:55:06

嵌入式系统日志如何防泄漏?:基于C语言的加密存储实战方案

第一章:嵌入式系统日志安全的挑战与意义在物联网和智能设备快速发展的背景下,嵌入式系统广泛应用于工业控制、医疗设备、智能家居等领域。这些系统在运行过程中产生大量日志数据,记录着关键的操作行为、异常事件和安全状态。然而,…

作者头像 李华
网站建设 2026/5/1 8:03:54

维普查重内幕揭秘:6款AI论文神器高阶玩法,不留AIGC痕迹一把过!

开头:90%学生不知道的维普查重“隐形红线”,你踩中了吗? 你以为维普查重只查文字重复?错了!2024年维普更新的AIGC检测模块,已经能通过“语义熵值”“句式复杂度”“参考文献匹配度”三个维度精准识别AI生成…

作者头像 李华
网站建设 2026/5/1 7:22:18

揭秘C++26 std::execution调度器:如何彻底改变现代并发程序设计?

第一章:C26 std::execution调度器的演进与核心理念C26 对并发编程模型进行了重要升级,其中 std::execution 调度器的设计标志着执行策略从静态选择向动态、可组合的运行时调度转变。这一演进旨在统一并扩展并行算法与异步任务的执行控制能力,…

作者头像 李华
网站建设 2026/4/27 21:09:52

为什么你的多线程程序在GCC 14下崩溃?一文说清并发ABI变更影响

第一章:为什么你的多线程程序在GCC 14下崩溃?GCC 14 的发布带来了多项语言特性和优化改进,尤其在 C23 支持和代码生成层面有显著提升。然而,许多开发者报告其原有的多线程程序在升级到 GCC 14 后出现随机崩溃、数据竞争或死锁问题…

作者头像 李华