【LVGL-按钮按钮矩阵部件】

LVGL-按钮&按钮矩阵部件

  • ■ LVGL-按钮部件
    • ■ 按钮部件: 点击三个按钮一个回调函数修改label值。
  • ■ LVGL-按钮矩阵部件
    • ■ 示例一:按钮换行,和宽度设置。
    • ■ 示例二:设置按钮宽度为2倍
    • ■ 示例三:获取点击的按钮下标,和文本。
    • ■ 示例四:设置按钮为disabled
    • ■ 示例五:设置按钮为允许状态属性
    • ■ 示例六:设置按钮文本为重新着色
    • ■ 示例七:按钮文本内容写了颜色,但是关闭了按钮文本着色功能。
    • ■ 示例八:按钮文本内容着色,和允许状态属性。
    • ■ 示例九:多按钮,单选中。
    • ■ 示例十:数字输入功能:

■ LVGL-按钮部件

在这里插入图片描述

■ 按钮部件: 点击三个按钮一个回调函数修改label值。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果:

在这里插入图片描述

■ LVGL-按钮矩阵部件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

■ 示例一:按钮换行,和宽度设置。

btn2,btn3在第二行自动平分了宽度
在这里插入图片描述
在这里插入图片描述

■ 示例二:设置按钮宽度为2倍

btn2==下标为2按钮, 设置按钮下标为2的按钮2倍大小
在这里插入图片描述
在这里插入图片描述

■ 示例三:获取点击的按钮下标,和文本。

在这里插入图片描述
在这里插入图片描述

■ 示例四:设置按钮为disabled

在这里插入图片描述

■ 示例五:设置按钮为允许状态属性

在这里插入图片描述

在这里插入图片描述

■ 示例六:设置按钮文本为重新着色

在这里插入图片描述

■ 示例七:按钮文本内容写了颜色,但是关闭了按钮文本着色功能。

在这里插入图片描述

■ 示例八:按钮文本内容着色,和允许状态属性。

在这里插入图片描述
在这里插入图片描述

■ 示例九:多按钮,单选中。

在这里插入图片描述

在这里插入图片描述

■ 示例十:数字输入功能:

/* 获取当前活动屏幕的宽高 */
#define scr_act_width()  lv_obj_get_width(lv_scr_act())
#define scr_act_height() lv_obj_get_height(lv_scr_act())/* 按钮矩阵数组 */
static const char *num_map[] = { "1", "2", "3", "\n","4", "5", "6", "\n","7", "8", "9", "\n","#", "0", "%", "" };static uint16_t zoom_val;                           /* 图片缩放系数 */
static lv_point_t points[] = {{0,0},{0,200}};       /* 线条坐标点数组 */static const lv_font_t *font;                       /* 定义字体 */
static lv_obj_t *label_input;                       /* 输入框标签 */
static lv_obj_t *obj_input;                         /* 输入框背景 */LV_IMG_DECLARE(img_user);                           /* 声明图片 *//*** @brief  按钮矩阵事件回调* @param  *e :事件相关参数的集合,它包含了该事件的所有数据* @return 无*/
static void btnm_event_cb(lv_event_t* e)
{uint8_t id;lv_event_code_t code = lv_event_get_code(e);                                /* 获取事件类型 */lv_obj_t *target = lv_event_get_target(e);                                  /* 获取触发源 */if (code == LV_EVENT_VALUE_CHANGED){id = lv_btnmatrix_get_selected_btn(target);                             /* 获取按键索引 */lv_label_set_text(label_input, lv_btnmatrix_get_btn_text(target, id));  /* 更新输入框标签文本 */lv_obj_align_to(label_input, obj_input, LV_ALIGN_CENTER, 0, 0);         /* 设置标签位置 */}
}/*** @brief  密码输入界面* @param  无* @return 无*/
static void lv_example_btnmatrix(void)
{/* 根据屏幕宽度选择字体和图片缩放系数 */if (scr_act_width() <= 480){font = &lv_font_montserrat_14;zoom_val = 128;}else{font = &lv_font_montserrat_30;zoom_val = 256;}/* 图片显示 */lv_obj_t *img = lv_img_create(lv_scr_act());                                                /* 创建图片部件 */lv_img_set_src(img, &img_user);                                                             /* 设置图片源 */lv_img_set_zoom(img, zoom_val);                                                             /* 设置图片缩放 */lv_obj_align(img, LV_ALIGN_CENTER, -scr_act_width()/4, -scr_act_height()/7);                /* 设置位置 */lv_obj_set_style_img_recolor(img, lv_color_hex(0xf2f2f2),0);                                /* 设置重新着色 */lv_obj_set_style_img_recolor_opa(img,100,0);                                                /* 设置着色透明度 *//* 用户标签 */lv_obj_t *label_user = lv_label_create(lv_scr_act());                                       /* 创建标签 */lv_label_set_text(label_user, "USER");                                                      /* 设置文本 */lv_obj_set_style_text_font(label_user, font, LV_PART_MAIN);                                 /* 设置字体 */lv_obj_set_style_text_align(label_user, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);                /* 设置文本居中 */lv_obj_align_to(label_user, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);                           /* 设置位置 *//* 输入框背景 */obj_input = lv_obj_create(lv_scr_act());                                                    /* 创建基础对象 */lv_obj_set_size(obj_input, scr_act_width()/4, scr_act_height()/12);                         /* 设置大小 */lv_obj_align_to(obj_input, label_user, LV_ALIGN_OUT_BOTTOM_MID, 0, scr_act_height()/20);    /* 设置位置 */lv_obj_set_style_bg_color(obj_input, lv_color_hex(0xcccccc),0);                             /* 设置背景颜色 */lv_obj_set_style_bg_opa(obj_input, 150,0);                                                  /* 设置透明度 */lv_obj_set_style_border_width(obj_input, 0 , 0);                                            /* 去除边框 */lv_obj_set_style_radius(obj_input, 20, 0);                                                  /* 设置圆角 */lv_obj_remove_style(obj_input, NULL, LV_PART_SCROLLBAR);                                    /* 移除滚动条 *//* 输入框文本标签 */label_input = lv_label_create(lv_scr_act());                                                /* 创建标签 */lv_label_set_text(label_input, "");                                                         /* 设置文本 */lv_obj_set_style_text_font(label_input, font, LV_PART_MAIN);                                /* 设置字体 */lv_obj_set_style_text_align(label_input, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);               /* 设置文本居中 */lv_obj_align_to(label_input, obj_input, LV_ALIGN_CENTER, 0, 0);                             /* 设置位置 *//* 分隔线 */lv_obj_t *line = lv_line_create(lv_scr_act());                                              /* 创建线条 */lv_line_set_points(line, points, 2);                                                        /* 设置线条坐标点 */lv_obj_align(line, LV_ALIGN_CENTER, 0, 0);                                                  /* 设置位置 */lv_obj_set_style_line_color(line, lv_color_hex(0xcdcdcd),0);                                /* 设置线条颜色 *//* 按钮矩阵(创建) */lv_obj_t *btnm = lv_btnmatrix_create(lv_scr_act());                                         /* 创建按钮矩阵 */lv_obj_set_size(btnm, scr_act_width()* 2/5, scr_act_width()* 2/5);                          /* 设置大小 */lv_btnmatrix_set_map(btnm, num_map);                                                        /* 设置按钮 */lv_obj_align(btnm, LV_ALIGN_RIGHT_MID, -scr_act_width()/16, 0);                             /* 设置位置 */lv_obj_set_style_text_font(btnm, font, LV_PART_ITEMS);                                      /* 设置字体 *//* 按钮矩阵(优化界面) */lv_obj_set_style_border_width(btnm, 0, LV_PART_MAIN);                                       /* 去除主体边框 */lv_obj_set_style_bg_opa(btnm, 0, LV_PART_MAIN);                                             /* 设置主体背景透明度 */lv_obj_set_style_bg_opa(btnm, 0, LV_PART_ITEMS);                                            /* 设置按钮背景透明度 */lv_obj_set_style_shadow_width(btnm, 0, LV_PART_ITEMS);                                      /* 去除按钮阴影 */lv_obj_add_event_cb(btnm, btnm_event_cb, LV_EVENT_VALUE_CHANGED, NULL);                     /* 设置按钮矩阵回调 */
}

在这里插入图片描述

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

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

相关文章

大数据主要组件HDFS Iceberg Hadoop spark介绍

HDFSIceberghadoopspark HDFS 面向PB级数据存储的分布式文件系统&#xff0c;可以存储任意类型与格式的数据文件&#xff0c;包括结构化的数据以及非结构化的数据。HDFS将导入的大数据文件切割成小数据块&#xff0c;均匀分布到服务器集群中的各个节点&#xff0c;并且每个数据…

Gartner发布网络安全应用生成式AI指南:应用生成增强功能提升企业网络安全能力和效率的三个领域及9个实例

生成增强功能是专门为提高知识工作者的生产力、解决网络安全技能短缺问题并降低大型语言模型带来的风险而构建的。安全和风险管理领导者通过在运营中采用生成增强来提高团队的能力。 主要发现 与其他人工智能实现相比&#xff0c;生成式人工智能 (GenAI)解决方案&#xff0c;特…

绿色节能|AIRIOT智慧建材能耗管理解决方案

建材供应是建筑业不可或缺的一个重要环节&#xff0c;在环保和企业可持续发展的双重需求下&#xff0c;建材生产商对建材生产过程中的能耗掌握和能耗管理尤其关注。但在实际生产和运营过程中&#xff0c;传统的建材能耗管理方式往往存在如下痛点&#xff1a; 用户管理权限不完善…

汽车ECU的虚拟化技术(五) -- 对MCU虚拟化实现难点的思考

目录 1.概述 2.虚拟化软件的难点 2.1 虚拟化中的中断处理 2.2 虚拟ECU的通信 3.小结 1.概述 在上面文章里汽车ECU的虚拟化技术(四) -- 对MCU虚拟化实现难点的思考-CSDN博客&#xff0c;解了OEM面临新的电子电气架构下的集成难点&#xff0c;引入了hypervisor以及VM调度机制…

ARM-Linux 开发板下安装编译 OpenCV 和 Dlib

安装 OpenCV 和 Dlib 不像在 x86 平台下那样简单&#xff0c;用一句命令就可以自动安装完。而在 ARM 平台中许多软件都需要自行下载编译&#xff0c;且还有许多问题&#xff0c;本篇文章就是记录在 ARM 平台下载 OpenCV 踩过的坑。 硬件环境&#xff1a; RK3568 Ubuntu20.04…

全国大学生数学建模大赛备赛——相关系数的求解(皮尔逊(pearson)、斯皮尔曼(spearman)、肯德尔(kendall)相关系数)

相关系数是用来衡量两个变量之间线性相关程度的指标。它的取值范围在-1到1之间&#xff0c;当相关系数为1时表示两个变量完全正相关&#xff08;即一个变大另一个也变大&#xff09;&#xff0c;当相关系数为-1时表示两个变量完全负相关&#xff08;即一个变大另一个变小&#…

定制 Elasticsearch 镜像

安装ik分词器 下载ik分词器 下载地址&#xff1a;https://github.com/infinilabs/analysis-ik/releases Dockerfile FROM docker.elastic.co/elasticsearch/elasticsearch:8.12.2 COPY ./elasticsearch-analysis-ik-8.12.2.zip /opt/ RUN bin/elasticsearch-plugin instal…

国产DSP FT-M6678开发-网络开发

简介 今天准备调试FT-M6678的网络部分,参考例程是《3. FT-M6678 Project\1. FT-M6678 接口驱动函数\13. GMAC\NDK 协议栈工程-V7.1\03应用例程\UDP\DSP端应用程序\DSP_UDP_Test_V7》,首先参照文档将NDK使用官方提供的NDK进行替换: 将D:\ti\pdk_C667…

FMEA助力新能源汽车行业腾飞:安全、效率双提升

随着新能源汽车市场的迅猛发展&#xff0c;各大车企纷纷加大研发力度&#xff0c;力求在激烈的市场竞争中脱颖而出。其中&#xff0c;FMEA&#xff08;故障模式与影响分析&#xff09;作为一种先进的质量管理工具&#xff0c;正被越来越多地应用于新能源汽车的研发和生产过程中…

深度学习pytorch——链式法则(Chain rule)(持续更新)

这篇文章将会以深度学习的角度解析链式法则。 基本的求导法则 高中的时候就学过&#xff0c;大学高数也巩固了一遍&#xff0c;这里不再赘述。 深度学习中的链式法则 为什么要讲述深度学习中的链式法则&#xff1f; 通过链式法则&#xff0c;我们可以得到中间层信息&#x…

unbantu Apache的基本配置与配置静态资源访问

目录 前言: 1.Apache介绍 2.安装Apache 3. 测试Apache服务是否启动成功 3.1配置Servername 3.2重启服务 4.配置Apache主页面 5. 配置静态的资源 6.为静态资源设置访问权限(基于源地址) 致谢: 前言: 此博客是基于unbantu的Apache服务的详细解析&#xff0c;在这片博…

Elasticsearch面试系列-03

1. Elasticsearch 中 refresh 和 flush 有什么区别? 整体流程: 1、数据写入buffer缓冲和translog日志文件中。当写一条数据document的时候,一方面写入到mem buffer缓冲中,一方面同时写入到translog日志文件中。 2、buffer满了或者每隔1秒(可配),refresh将mem buffer中的…

34 | 到底可不可以使用join?

在实际生产中&#xff0c;关于 join 语句使用的问题&#xff0c;一般会集中在以下两类&#xff1a; 1. 我们 DBA 不让使用 join&#xff0c;使用 join 有什么问题呢&#xff1f; 2. 如果有两个大小不同的表做 join&#xff0c;应该用哪个表做驱动表呢&#xff1f; 今天这篇文…

【算法刷题 | 二叉树 02】3.21 二叉树的层序遍历01(5题:二叉树的层序遍历、层序遍历||、右视图、层平均值,以及N叉树的层序遍历)

文章目录 5.二叉树的层序遍历5.1 102_二叉树的层序遍历5.1.1问题5.1.2解法&#xff1a;队列 5.2 107_二叉树的层序遍历||5.2.1问题5.2.2解法&#xff1a;队列 5.3 199_二叉树的右视图5.3.1问题5.3.2解决&#xff1a;队列 5.4 637_二叉树的层平均值5.4.1问题5.4.2解决&#xff1…

.NET Core 服务实现监控可观测性最佳实践

前言 本次实践主要是介绍 .Net Core 服务通过无侵入的方式接入观测云进行全面的可观测。 环境信息 系统环境&#xff1a;Kubernetes编程语言&#xff1a;.NET Core ≥ 2.1日志框架&#xff1a;Serilog探针类型&#xff1a;ddtrace 接入方案 准备工作 DataKit 部署 DataK…

4核16G服务器租用优惠价格,26.52元1个月,半年149元

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年&#xff0c;配置为阿里云服务器ECS经济型e实例ecs.e-c1m4.xlarge&#xff0c;4核16G、按固定带宽 10Mbs、100GB ESSD Entry系统盘&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接打开如下图&a…

ZHUTI主提2024夏季系列 —「逐·行」

ZHUTI主提全新发布2024夏季「逐行」系列&#xff0c;聚焦当下人与自然的关系&#xff0c;以衣为载体&#xff0c;秉承东方哲学的艺术理念&#xff0c;将美学艺术与主流时尚设计融合&#xff0c;赋予当代时装表达新方向&#xff0c;共创现代女性之美。 取自然之意境&#xff0c…

list.sort()Collections.sort()深入理解

list.sort()&&Collections.sort() 文章目录 list.sort()&&Collections.sort()背景相关代码代码一代码二 原理举一反三 业务场景考虑 背景 业务中经常用到List的sort()方法&#xff0c;但是对于其中return的-1&#xff0c;0&#xff0c;1理解不到位&#xff0c…

蓝桥杯 2022 省B 李白打酒加强版

这题用递归暴力的方法如下&#xff1a; #include<iostream> #include<bits/stdc.h> using namespace std; int num; int N,M; void dfs(int now,int n,int m) {if(now<0 || n>N ||m>M)return ;if(nN && mM){if(now1)num1;return;}dfs(now-1,n,m1…

微服务day05(下) -- ES文档操作 + RestApi + RestClient操作文档

3.1.新增文档 语法&#xff1a; POST /索引库名/_doc/文档id {"字段1": "值1","字段2": "值2","字段3": {"子属性1": "值3","子属性2": "值4"},// ... } 示例&#xff1a; # 插…