LVGL学习笔记16 - 进度条Bar

news2025/1/17 17:58:45

目录

 1. Parts

2. 模式

2.1 LV_BAR_MODE_SYMMETRICAL:对称模式

2.2 LV_BAR_MODE_RANGE:范围模式

3. 动画

4. 样式

4.1 方向

4.2 渐变色

4.3 增加边框

4.4 滚动条方向


进度条有一个背景和一个指示器组成,通过lv_bar_create创建对象。

static lv_obj_t *obj1 = lv_bar_create(lv_scr_act());
lv_obj_align(obj1, LV_ALIGN_CENTER, 0, 0);
lv_bar_set_value(obj1, 70, LV_ANIM_OFF);

进度条默认的范围是 0..100。

 1. Parts

进度条分2个Part:LV_PART_MAIN和LV_PART_INDICATOR。

lv_obj_set_style_bg_color(obj1, lv_color_hex(0xff0000), LV_PART_MAIN);
lv_obj_set_style_bg_opa(obj1, LV_OPA_100, LV_PART_MAIN);
lv_obj_set_style_bg_color(obj1, lv_color_hex(0x0000ff), LV_PART_INDICATOR);

红色对应MAIN,蓝色对应INDICATOR。

2. 模式

进度条可以是以下模式之一:LV_BAR_MODE_NORMAL、LV_BAR_MODE_SYMMETRICAL和LV_BAR_MODE_RANGE。

通过lv_bar_set_mode设置模式,默认是Normal。

2.1 LV_BAR_MODE_SYMMETRICAL:对称模式

可以指定负的最小范围,但是只能从零值到当前值绘制指示器。

lv_bar_set_mode(obj1, LV_BAR_MODE_SYMMETRICAL);
lv_bar_set_range(obj1, -100, 100);
lv_bar_set_value(obj1, 100, LV_ANIM_ON);

 指示器是从0画到100.

lv_bar_set_mode(obj1, LV_BAR_MODE_SYMMETRICAL);
lv_bar_set_range(obj1, -100, 100);
lv_bar_set_value(obj1, -100, LV_ANIM_ON);

 指示器是从0画到-100.

2.2 LV_BAR_MODE_RANGE:范围模式

和对称模式类似,可以指定负的最小范围,但是可以通过lv_bar_set_start_value设置起始值,然后可以从这个起始值绘制指示器。

lv_bar_set_mode(obj1, LV_BAR_MODE_RANGE);
lv_bar_set_range(obj1, -100, 100);
lv_bar_set_start_value(obj1, -100, LV_ANIM_ON);
lv_bar_set_value(obj1, 100, LV_ANIM_ON);

 

 注意,lv_bar_set_start_value必须要在lv_bar_set_range之后设置,否则会无效。

3. 动画

在设置值是可以打开动画效果。

可以通过lv_obj_set_style_anim_time修改动画时间

    obj1 = lv_bar_create(lv_scr_act());
    lv_obj_align(obj1, LV_ALIGN_CENTER, 0, 0);
    lv_bar_set_mode(obj1, LV_BAR_MODE_NORMAL);
    lv_obj_set_style_anim_time(obj1, 2000, LV_PART_MAIN);
    lv_bar_set_range(obj1, 0, 100);
    //lv_bar_set_start_value(obj1, -100, LV_ANIM_ON);
    //lv_bar_set_value(obj1, 0, LV_ANIM_ON);

    static lv_obj_t* btn1 = lv_btn_create(lv_scr_act());
    lv_obj_align(btn1, LV_ALIGN_CENTER, 0, -40);
    lv_obj_add_event_cb(btn1, barBtnEventHandle, LV_EVENT_CLICKED, NULL);

static void barBtnEventHandle(lv_event_t* e)
{
    lv_event_code_t eventCode = lv_event_get_code(e);
    if (eventCode == LV_EVENT_CLICKED)
    {
        lv_bar_set_value(obj1, 50, LV_ANIM_ON);
    }
}

 

4. 样式

4.1 方向

当进度条的宽度大于等于高度时,水平方向。

lv_obj_set_size(obj1, 200, 200);

 

当进度条的宽度小于高度时,垂直方向。

lv_obj_set_size(obj1, 20, 200);

4.2 渐变色

lv_obj_set_style_bg_color(obj1, lv_color_hex(0xff0000), LV_PART_INDICATOR);
lv_obj_set_style_bg_grad_color(obj1, lv_color_hex(0x0000ff), LV_PART_INDICATOR);
lv_obj_set_style_bg_grad_dir(obj1, LV_GRAD_DIR_HOR, LV_PART_INDICATOR);
lv_bar_set_value(obj1, 100, LV_ANIM_ON);

4.3 增加边框

lv_obj_set_style_border_color(obj1, lv_color_hex(0xff00000), LV_PART_MAIN);
lv_obj_set_style_border_width(obj1, 2, LV_PART_MAIN);
lv_obj_set_style_pad_all(obj1, 6, LV_PART_MAIN);
lv_obj_set_style_radius(obj1, 12, LV_PART_MAIN);

4.4 滚动条方向

滚动条默认是从左向右变化,可以通过lv_obj_set_style_base_dir设置不同的方向。

lv_obj_set_style_base_dir(obj1, LV_BASE_DIR_RTL, LV_PART_MAIN);

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

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

相关文章

mysql多表查询

一、关联查询(联合查询) 1.1 什么是关联查询 关联查询:两个或者多个表,一起查询。 前提条件: 这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段&#x…

初识IL2CPP

在Unity中进行打包时,有两种打包方式选择:Mono和IL2CPP Mono和IL2Cpp是Unity的脚本后处理方式,通过脚本后处理实现Unity的跨平台 1.Mono (1). Mono组成组件: C#编辑器,CLI虚拟机,以及核心类别程序库 (2).跨平台过程 Mo…

【Linux】多线程概念

目录🌈前言🌸1、Linux线程概念🍡1.1、概念🍢1.2、线程的优点🍧1.3、线程的缺点🍨1.4、线程的异常和用途🌺2、Linux下进程 vs 线程🌈前言 这篇文章给大家带来线程的学习!…

PID算法入门(一)

1.简介 PID是Proportional(比例), Integral(积分), Differential(微分)的首字母缩写,他是一种结合比例,积分,微分三个环节于一体的闭环控制算法. 2.PID各环节 2.1比例环节 成比例地反应控制系统的偏差信号,即输出&a…

Codeforces Round #843 (Div. 2) A1 —— D

题目地址:Dashboard - Codeforces Round #843 (Div. 2) - Codeforces一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055qq.com Time of completion:2023.1.11 Last edited: 2023.1.11 目录 ​编辑 A1. Gardener…

读论文——day61 目标检测模型的决策依据与可信度分析

目标检测模型的决策依据与可信度分析本文贡献及原文1 相关工作(略看)1.3 目标检测模型2 背景知识(LIME)2.2 LIME3 目标检测决策依据及可信度分析3.1 决策依据3.2 对目标检测模型的预测进行可信度评价4 基于 LIME 的目标检测模型解…

(第四章)OpenGL超级宝典学习:必要的数学知识

必要的数学知识 前言 在本章当中,作者着重介绍了几个和3D图形学重要的数学知识,线性代数基础好的同学可以直接绕过本章,说实话这篇博客写到这里,我是非常犹豫的,本章节的内容可以说是很基础,但是相当…

SSM框架01_Spring

有一个效应叫知识诅咒:自己一旦知道了某事,就无法想象这件事在未知者眼中的样子。00-Spring课程介绍01-初识Spring今天所学的Spring其实是Spring家族中的Spring Framework;Spring Fra是Spring家族中其他框架的底层基础,学好Spring可以为其他S…

Morse1题解

原理摩尔斯电码和电报简单说一下电报和摩尔斯电码的原理最简单的电报模型就是一个电源,一个开关和一个电磁铁当需要长距离使用时候,需要用到继电器按下开关,电磁铁会吸引磁铁长按开关,电磁铁就会闭合一段时间,留下一划…

Jenkins集成GitLab Webhooks自动化构建

JenkinsGitLab Webhooks自动构建项目1 构建步骤1.1 Jenkins中设置构建触发器1.2 Build Authorization Token Root插件安装1.3 GitLab配置Webhooks2 测试webhooks2.1 测试推送事件2.2 测试合并请求事件2.3 代码修改提交测试1 构建步骤 1.1 Jenkins中设置构建触发器 这里先随便写…

Markdown与DITA比较

Markdown是一种轻量级标记语言,创始人为John Gruber。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的HTML文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于Markdown的轻量化、易读易写特性,并且对于图片&am…

第一章Mybatis基础操作学习

文章目录MyBatis简介MyBatis历史MyBatis特性和其它持久化层技术对比搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能不带参数的增删改查Mapper接口的编写对应Mapper接口的xml文件编写核心配…

【Python基础】如何使用pycharm

1、设置Python 解释器 在任何项目,第一步就是设置Python 解释器,就是那个Python.exe 在File->Setting->Projec: xxx 下找到 Project Interpreter。然后修改为你需要的 Python 解释器。注意这个地方一定要注意的是:在选择 Python 解释…

Dubbo 学习笔记

Dubbo 学习笔记 1.基础知识 1.1 分布式基础理论 1.1.1 什么是分布式系统? 《分布式系统原理与范型》定义: 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统分布式系统(distributed system&#xf…

java基于ssm蛋糕店蛋糕商城蛋糕系统网站源码

简介 java使用ssm开发的蛋糕商城系统,用户可以注册浏览商品,加入购物车或者直接下单购买,在个人中心管理收货地址和订单,管理员也就是商家登录后台可以发布商品,上下架商品,处理待发货订单等。 演示视频 …

HTML贪吃蛇游戏源码(穿墙)

演示 完整HTML <!DOCTYPE html> <html> <head><meta charset"utf-8"><title><・)))><<</title><link rel"shortcut icon" href"${ctx}/image/snake_eating.png"><meta name"ref…

中科大2006年复试机试题

中科大2006年复试机试题 文章目录中科大2006年复试机试题第一题问题描述解题思路及代码第二题问题描述解题思路及代码第三题问题描述解题思路及代码第四题问题描述解题思路及代码第五题问题描述解题思路及代码第六题问题描述解题思路及代码第一题 问题描述 求矩阵的转置。 给…

three.js入门篇6之 环境贴图、经纬线映射贴图与高动态范围成像HDR

目录013-1 环境贴图013-2 经纬度映射贴图与HDR013-1 环境贴图 就是把周边的环境&#xff0c;贴在物体的表面之上 注意&#xff1a;px&#xff1a;x轴正向&#xff0c;nx&#xff1a;x轴负向 import * as THREE from "three" // console.log(main.js,THREE);// 导入…

06什么是Fabless?什么是IDM?

Fabless是SIC&#xff08;半导体集成电路&#xff09;行业中无生产线设计公司的简称&#xff0c;只搞设计的无晶圆厂半导体公司&#xff0c;生产交给像台积电这样的代工厂去做。 IDM是整合元件制造商&#xff0c;像英特尔这样既设计又制造的就叫IDM&#xff0c;因为规模大&…

对于字节,16进制,2进制, 0xFF,位移的一些杂记

1.普通字符串95 对应的16进制的展示&#xff0c;使用工具查看如下图 下图为普通字符串 下图为95对应的16进制 95对应的16进制字符串为39 35》39代表一个字节 35代表另一个字节 &#xff08;一个字节是由两位16进制字符串组成&#xff0c;比如39或35&#xff09; 1个字节对应…