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: 核心编程语言:作为《黑…

经验笔记:Hadoop

Hadoop经验笔记 一、Hadoop概述 Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。其设计目的是为了在商用硬件上运行,具备高容错性和可扩展性。Hadoop的核心是Hadoop Distributed File System (HDFS) 和YARN (Yet Another Resource Negot…

基于jstack、jmap、jstat 进行JVM监控

文章目录 引言I jmap 内存映像工具格式内存分配情况查看内存的对象II manager webapp/manager/status 查看服务器状态manager/jmxproxy 查询Tomcat指标III jps 查看本机的Java中进程信息语法格式如下只显示JVM的进程id输出传入main方法的参数输出main类或Jar的全限名输出传入JV…

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

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

LabVIEW性能优化方法

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

python并发与并行(一) ———— 用subprocess管理子进程

并发(concurrency)指计算机似乎能在同一时刻做许多件不同的事情。例如,在只配有一个CPU核心的计算机上面,操作系统可以迅速切换这个处理器所运行的程序,因此尽管同一时刻最多只有一个程序在运行,但这些程序…

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

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

今日算法:蓝桥杯基础题之“门牌制作”

你好同学,我是沐爸,欢迎点赞、收藏、评论和关注!个人知乎 今日算法第二题,如何制作门牌号,一起看看吧。 问题描述 小蓝要为一条街的住户制作门牌号。这条街一共有 2024 位住户,门牌号从 1 到 2024 编号。…

12.torchvision中的数据集使用

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

如何本地搭建Whisper语音识别模型

Whisper是OpenAI推出的一款强大的语音识别模型,具备多种语言的识别能力。尽管基于云的语音识别服务方便,但有些项目和需求需要在本地环境运行,以确保数据隐私和降低延迟。以下是如何在本地搭建Whisper语音识别模型的详细指南。 环境准备 1. 硬件要求: - 计算能力:建议…

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

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

Kubernetes高级调度 Initcontainer、Ephemeral containers和HPA

在前面的章节,已经学习过 Kubernetes 的调度基础,实现了将自己的服务部署到Kubernetes,但是在生产环境中,调度远远比自己想象的要复杂。 比如: 某些程序只能部署在固定的几台机器上。某些机器只能部署指定的 Pod。节点挂…

使用ffmpeg+node-media-server实现从rtsp服务器拉流再推送至rtmp服务器,实现http+flv进行web播放

最近由于项目的需要,需要从海康的摄像头中读取视频流然后在web页面上展示。 由于海康摄像头使用了rtsp协议提供视频拉流服务,而web页面目前使用的插件不支持直接播放rtsp协议的视频流;因此考虑使用ffmpeg从rtsp中拉流,再推流至rtm…

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

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

随身携带的android TV盒子以及tvbox-fongmi版的安装

https://www.everythingkodibuilds.com/p/install-android-tv-on-usb.html 现在大家都有笔记本,只要一个U盘,笔记本就能变身android电视盒子,这样也不错.这个文章就是介绍了这样的思路和实现的方法. 如果手里有x86的小型机,还能直接放在家里. 下面进入正题,先说上文中的流程和要…

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

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

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

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