news 2026/4/18 0:10:29

使用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/18 11:06:32

Android 基础入门教程 Date Time组件(上)

2.4.2 Date & Time组件(上) 分类 Android 基础入门教程 本节引言: 本节给大家带来的是Android给我们提供的显示时间的几个控件,他们分别是: TextClock,AnalogClock,Chronometer,另外其实还有个过时的…

作者头像 李华
网站建设 2026/4/18 5:27:05

Open-AutoGLM项目实战:在Android设备上实现自动操作与ADB键盘控制

项目简介 本文将详细介绍如何使用Open-AutoGLM项目实现对Android设备的自动控制,包括ADB键盘配置和设备连接设置。 ⚠️ 本文章仅供研究和学习使用。严禁用于非法获取信息、干扰系统或任何违法活动。请仔细审阅 使用条款 1. 项目获取与安装 首先,克隆项…

作者头像 李华
网站建设 2026/4/18 8:16:06

30人左右的小企业如何做文件共享?实现文件高效管理

企业团队紧凑、业务灵活,却常被企业文件管理的 “小事” 绊住脚:有人在微信群里翻半小时找历史合同,有人因本地硬盘损坏导致客户资料归零。那么,30人左右的小企业如何优雅地解决文件共享难题? 一、30人小企业文件共享…

作者头像 李华
网站建设 2026/4/18 12:53:15

大模型工程师月薪4万+!国家战略护航,500万人才缺口,小白也能入门的AI学习指南_AI大模型架构师月薪均4.6万,人才缺口500万!

人工智能领域,特别是大模型相关岗位薪资高企(AI架构师月薪超4万),国家政策大力支持,人才缺口达500万。人工智能是多学科交叉专业,核心课程包括机器学习、深度学习等。开设院校众多,可按顶配资源…

作者头像 李华
网站建设 2026/4/18 0:27:07

低代码平台Python插件开发指南(仅限高级工程师掌握的机密方案)

第一章:低代码平台Python插件开发的核心价值在现代软件开发中,低代码平台通过可视化界面显著提升了应用构建效率。然而,面对复杂业务逻辑或特定功能需求时,平台内置组件往往难以满足全部场景。此时,Python插件开发成为…

作者头像 李华
网站建设 2026/4/18 4:10:53

中断导致数据 corruption?,立即掌握C语言环境下的4步防护机制

第一章:中断导致数据 corruption 的根源剖析在现代操作系统和嵌入式系统中,中断是实现异步事件响应的核心机制。然而,若中断处理不当,极易引发数据 corruption,尤其是在共享资源未加保护的场景下。这类问题通常难以复现…

作者头像 李华