3、LVGL控件-开关、复选框、进度条

本篇文章目录导航

♠♠ LVGL控件-开关、复选框、进度条
♣♣♣♣ 一、LVGL开关部件
♦♦♦♦♦♦♦♦ 1.1 开关部件组成部分
♦♦♦♦♦♦♦♦ 1.2 开关部件基本API
♦♦♦♦♦♦♦♦ 1.3 实验小演示
♣♣♣♣ 二、LVGL复选框部件
♦♦♦♦♦♦♦♦ 2.1 复选框部件组成部分
♦♦♦♦♦♦♦♦ 2.2 复选框部件基本API
♦♦♦♦♦♦♦♦ 2.3 实验小演示
♣♣♣♣ 三、LVGL进度条部件
♦♦♦♦♦♦♦♦ 3.1 进度条部件组成部分
♦♦♦♦♦♦♦♦ 3.2 进度条部件基本API
♦♦♦♦♦♦♦♦ 3.3 实验小演示(固件更新进度条)
♦♦♦♦♦♦♦♦ 3.4 实验小演示(温度计)
 


#LVGL控件-开关、复选框
##一、LVGL开关部件
>开关部件常用于控制某个功能的开启和关闭,它可以直接显示被控对象的状态。

效果图:


 


###1.1 开关部件组成部分
主体LV_PART_MAIN
手柄LV_PART_KNOB
指示器LV_PART_INDICATOR
 


###1.2 开关部件基本API
创建开关部件:

lv_obj_t *switch1 = lv_switch_create(parent);

修改开关部件背景颜色:

/* 修改主体背景颜色 */
lv_obj_set_style_bg_color(switch1, lv_color_hex(0xffffff), LV_PART_MAIN);  /* 修改手柄背景颜色 */
lv_obj_set_style_bg_color(switch1, lv_color_hex(0xfc1944), LV_PART_KNOB);/* 修改指示器背景颜色,LV_STATE_CHECHED为打开状态 */
lv_obj_set_style_bg_color(switch1, lv_color_hex(0x23a1e7), LV_STATE_CHECKED | LV_PART_INDICATOR);

添加、清除开关状态

lv_obj_add_state(switch1, LV_STATE_CHECKED);      /* 默认开关打开状态 */
lv_obj_clear_state(switch1, LV_STATE_CHECKED);    /* 默认开关关闭状态 */lv_obj_add_state(switch1, LV_STATE_CHECKED | LV_STATE_DISABLED);      /* 默认开关打开且不可修改状态 */
lv_obj_clear_state(switch1, LV_STATE_DISABLED);                       /* 清除开关状态 */

获取(判断)开关状态:

lv_obj_has_state(switch1, LV_STATE_CHECKED);    /* bool类型返回值:开1、关0 */

为开关部件添加事件:

static void event_cb(lv_event_t *e)
{lv_event_code_t code = lv_event_get_code(e);if(code == LV_EVENT_VALUE_CHANGED){if(lv_obj_has_state(switch1, LV_STATE_CHECKED)){printf("LED ON \n");}else{printf("LED OFF \n");}}
}lv_obj_add_event_cb(switch1, event_cb, LV_EVENT_VALUE_CHANGED, NULL);      /* 状态改变时触发 */


###1.3 实验小演示
配置4个开关,状态分别为:默认关闭、默认打开、默认关闭且不可修改、默认打开且不可修改。

lv_obj_t *switch1;static void event_cb(lv_event_t *e)
{lv_event_code_t code = lv_event_get_code(e);if(code == LV_EVENT_VALUE_CHANGED){if(lv_obj_has_state(switch1, LV_STATE_CHECKED)){printf("LED ON \n");}else{printf("LED OFF \n");}}
}void my_gui(void)
{/*******************************第一个开关***********************************/switch1 = lv_switch_create(lv_scr_act()); /* 创建开关部件 */lv_obj_align(switch1, LV_ALIGN_CENTER, 0, -90);/* 修改主体背景颜色 */lv_obj_set_style_bg_color(switch1, lv_color_hex(0x00ff00), LV_PART_MAIN);/* 修改手柄背景颜色 */lv_obj_set_style_bg_color(switch1, lv_color_hex(0xfc1944), LV_PART_KNOB);/* 修改指示器背景颜色,LV_STATE_CHECHED为打开状态 */lv_obj_set_style_bg_color(switch1, lv_color_hex(0x23a1e7), LV_STATE_CHECKED | LV_PART_INDICATOR);lv_obj_add_state(switch1, LV_STATE_CHECKED);                            /* 默认开关打开状态 */lv_obj_add_event_cb(switch1, event_cb, LV_EVENT_VALUE_CHANGED, NULL);   /* 状态改变时触发 *//*******************************第二个开关***********************************/lv_obj_t *switch2 = lv_switch_create(lv_scr_act()); /* 创建开关部件 */lv_obj_align(switch2, LV_ALIGN_CENTER, 0, -30);/* 修改主体背景颜色 */lv_obj_set_style_bg_color(switch2, lv_color_hex(0x00ff00), LV_PART_MAIN);/* 修改手柄背景颜色 */lv_obj_set_style_bg_color(switch2, lv_color_hex(0xfc1944), LV_PART_KNOB);/* 修改指示器背景颜色,LV_STATE_CHECHED为打开状态 */lv_obj_set_style_bg_color(switch2, lv_color_hex(0x23a1e7), LV_STATE_CHECKED | LV_PART_INDICATOR);lv_obj_clear_state(switch2, LV_STATE_CHECKED);                          /* 默认开关关闭状态 *//*******************************第三个开关***********************************/lv_obj_t *switch3 = lv_switch_create(lv_scr_act()); /* 创建开关部件 */lv_obj_align(switch3, LV_ALIGN_CENTER, 0, 30);lv_obj_add_state(switch3, LV_STATE_CHECKED | LV_STATE_DISABLED);        /* 默认开关打开且不可修改状态 *//*******************************第四个开关***********************************/lv_obj_t *switch4 = lv_switch_create(lv_scr_act()); /* 创建开关部件 */lv_obj_align(switch4, LV_ALIGN_CENTER, 0, 90);lv_obj_clear_state(switch4, LV_STATE_CHECKED);      /* 默认开关关闭状态 */lv_obj_add_state(switch4, LV_STATE_DISABLED);       /* 默认开关打开且不可修改状态 */
}

点击3、LVGL控件-开关、复选框、进度条——古月居可查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

立体库技术协议:完整版

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载。 这份文件是一份关于自动化立体库技术协议的详细文档,包括了总体设计方案、…

C语言中的运算符

一,算数运算符 基本算术运算符: 加法():用于两个数相加。例如 int a 3 5;,结果 a 的值为 8。 减法(-):两个数相减。如 int b 7 - 4;,b 的值为 3。 乘法(*…

【动图效果概览】自动化建链后,Exata调用STK更新卫星位置

如下图所示,动画遵循 时间前进方向,划分截取为5段 (因为每张照片限制大小5MB,不够应该够看清个大概意思了):

黑神话悟空用什么编程语言

《黑神话:悟空》作为一款备受瞩目的国产单机动作游戏,其背后的开发涉及了多种编程语言和技术。根据公开信息和游戏开发行业的普遍做法,可以推测该游戏主要使用了以下几种编程语言: C: 核心编程语言:作为《黑…

【计算机网络】计算机网络的分层结构

为什么要分层?为什么要制定协议? 计算机网络功能复杂→采用分层结构,将诸多功能合理地划分在不同层次→对等层之间制定协议,以实现功能。

LabVIEW性能优化方法

在LabVIEW开发中,性能优化至关重要。合理的内存管理、并行处理、多线程优化、以及界面和代码的精简能够大幅提高程序效率,降低系统资源占用。下面将探讨LabVIEW性能优化的各个方面,提供实用技巧和建议,帮助开发者提升项目的执行速…

Node.js原生开发脚手架工具(下)

前言 在现代软件开发中,脚手架工具成为提高开发效率和一致性的关键利器。使用Node.js原生开发自己的脚手架工具不仅能帮助自动化常见任务,还能根据具体需求进行高度定制。Node.js的异步非阻塞特性和丰富的模块系统使其成为构建这种工具的理想选择。本篇文…

12.torchvision中的数据集使用

torchvision中的数据集使用 需要学习知识: 如何把数据集(多张图片)和 transforms 结合在一起。 标准数据集如何下载、查看、使用。 进入pytorch官网,可以看到pytorch文档里分了不同的块,如下图,标出了常…

《机器学习》—— K-means 聚类算法

文章目录 一、什么是K-means 聚类算法?二、聚类效果评价方式——轮廓系数三、示例:代码实现四、聚类算法的优缺点 一、什么是K-means 聚类算法? K-Means 是 Python 中非常流行的一个聚类算法,它属于无监督学习算法的一种。在 sci…

PDF招生简章如何转二维码?

​随着科技的不断发展,招生报名方式也在不断创新。如今,许多学校和企业都采用PDF招生简章来宣传招生。然而,传统的纸质招生简章存在携带不便、易损坏等问题。为了解决这些问题,将PDF招生简章转换为二维码成为了一种趋势。那你知道…

微信小程序开发--详情【开发一次 多端覆盖】

目录 1、准备工作 了解 uni-app : 准备开发工具: 下载 : 安装完成后,打开这个开发者工具: 对微信小程序进行配置: 使用开发工具HBuilderX:: 先安装终端插件 2、初始化一个demo 创建项目&#xff1…

2024广东省职业技能大赛云计算赛项实战——安装ELK日志分析服务

安装ELK日志分析服务 前言 ELK是一个用于处理和分析日志数据的开源技术栈,由三个主要组件组成,E即Elasticsearch,L即Logstash,K即Kibana。 Elasticsearch是一个分布式搜索和分析引擎,用于存储、搜索和分析大量数据&…

OpenCV绘图函数(4)绘制轮廓线的函数drawContours()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数会在图像中绘制轮廓线&#xff0c;如果 thickness ≥ 0&#xff0c;则绘制轮廓线&#xff1b;如果 thickness < 0&#xff0c;则填充由轮…

某系统任意用户创建漏洞

初来人间不知苦&#xff0c;潦倒半生一身无&#xff0c;转身回望来时路&#xff0c;方知生时为何哭。 漏洞描述 某系统存在任意用户创建漏洞&#xff0c;发送特定的请求包攻击者可以创建管理员账户登录后台 漏洞实战 出现漏洞的文件为 userproce.php&#xff0c;出现漏洞的…

基于STM32开发的智能垃圾桶系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化超声波传感器检测与垃圾桶开关控制状态显示与声音提示Wi-Fi通信与满溢通知应用场景 家庭环境的智能垃圾桶管理办公室与公共场所的智能垃圾处理常见问题及解决方案 常见问题解决方案…

POJO、PO、DTO、VO、BO到底是什么?都如何使用?(基础概念+传输示意图+示例代码)带你一次玩转层出不穷的Object

文章目录 前言一、解释关系二、POJO、PO、DTO、VO、DAO、BO1.什么是POJO&#xff08;Plain Old Java Object&#xff09;2.什么是PO&#xff08;Persistent Object&#xff09;3.什么是DTO&#xff08;Data Transfer Object&#xff09;4.什么是VO&#xff08;View Object&…

TCP三次握手过程详解

三次握手过程&#xff1a; 客户端视角&#xff1a; 1.客户端调用connect&#xff0c;开启计时器&#xff0c;发送SYN包&#xff0c;如果重传超时&#xff0c;认为连接失败 2.如果收到服务端的ACK&#xff0c;则进入ESTABLISHED状态 3.清除重传计时器&#xff0c;发送ACK&…

NoSQL数据库-Redis集群详解及案例实现

一、 关系型数据库和 NoSQL 数据库 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 关系型数据库&#xff0c;是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库中的数据主流的 MySQL、Oracle、MS SQL Server 和 D…

mac 虚拟机PD19运行E-prime实验遇到E-prime unable to set display mode:0*80004001问题解决

作者&#xff1a;50% unable to set display mode问题 总结&#xff1a; 1. 修改该Experiment的Devices中的Dispaly为640*680&#xff0c;Color Bit Depth设置为32。&#xff08;这个分辨率仅限于学习用&#xff0c;实际实验应该还是在真机上&#xff09; 2. 右键开始菜单中的E…

取模+背包

前言&#xff1a;一开始我想错了&#xff0c;一开始我想的是直接统计每一项模完后的和&#xff0c;我们只要能够取到一半&#xff0c;那么就有解&#xff0c;但是时间复杂度太大了 我们做推导 x y s u m x y sum xysum x − y k ∗ n x - y k * n x−yk∗n 那么我们可…