合宙Air724UG LuatOS-Air LVGL API-概念

概念
在 LVGL 中,用户界面的基本构建块是对象。例如,按钮,标签,图像,列表,图表或文本区域。

属性
基本属性
所有对象类型都共享一些基本属性:

Position (位置)
Size (尺寸)
Parent (父母)
Click enable (单击启用)
我们可以使用 lvgl.obj_set_… 和 lvgl.obj_get_… 等前缀的函数设置或者获取这些属性。
例如:

– 设置基础对象的属性
lvgl.obj_set_size(btn, 100, 50) – 设置按键的大小
lvgl.obj_set_pos(btn, 20,30) – 设置按键的位置
特殊属性
有些对象类型也具有特殊的属性。例如,滑块具有

min、max、values (最小最大值)
current value (当前值)
custom styles (自定义样式)
对于这些属性,每种对象类型都有唯一的 API 函数。例如一个滑块的 API 调用过程:

– 设置滑块的特殊属性
lvgl.slider_set_range(slider, 0, 100) – 设置滑块的最小值和最大值
lvgl.slider_set_value(slider, 40, LV_ANIM_ON) – 设置当前值(屏幕坐标系位置)
lvgl.slider_set_action(slider, my_action) – 设置回调函数
工作机制
继承
父对象可以作为其子对象的容器。每个对象只能一个父对象(屏幕除外),但是一个父对象可以有无限多个子对象。父对象的类型没有限制,但是有特殊的父对象(例如,按钮)和特殊的子对象(例如,标签)。

追随
如果更改了父对象的位置,则子对象将与父对象一起移动,并且子对象的位置都保持相对于父对象位置不变。 例如,坐标 (0,0) 表示子对象将独立于父对象的位置保留在父对象的左上角,代码:

par = lvgl.obj_create(lvgl.scr_act(), nil) – 在当前屏幕中创建一个对象
lvgl.obj_set_size(par, 100, 80) – 设置对象的大小

obj1 = lvgl.obj_create(par, nil) – 基于前面创建的对象(par)创建一个子对象(obj1),之前的对像成为父对象
lvgl.obj_set_pos(obj1, 10, 10); – 设置子对象的位置
202104011247331.png

当我们修改父对象的位置,子对象也会一起移动,以保持和父对象的相对位置不变:

lvgl.obj_set_pos(par, 50, 50); – 移动父对象,子对象也会跟着移动,以保持相对位置不变
202104011247333.png

创建-删除
在LVGL中,可以在运行时动态地创建和删除对象。这意味着仅当前创建的对象需要消耗 RAM。例如,如果需要图表,我们可以在需要时创建它,并在不可见或不需要时将其删除。
每个对象类型都有各自的创建函数。它需要两个参数:

指向父对象的指针。创建屏幕时以 nil作为父级。
用于复制具有相同类型的对象的指针(可选)。如果不行进行复制操作为 nil。
创建函数如下所示:
lvgl._create(parent, copy)
lvgl.obj_del 将立即删除该对象。

我们可以使用 lv_obj_clean 删除对象的所有子对象(但不会删除对象本身):

lvgl.obj_clean(obj)
屏幕对象
创建屏幕对象
屏幕是没有父对象的特殊对象。应该像这样创建它们:

scr = lvgl.obj_create(nil, nil)
可以使用任何对象类型创建屏幕。例如:创建墙纸的基础对象或图像。

获取活动屏幕
这始终是每个显示屏上的活动屏幕。默认情况下,该库为每个显示创建并加载 “基础对象” 作为屏幕。
要获取当前活动的屏幕使用函数 lvgl.scr_act()

载入屏幕
调用函数 lvgl.scr_load(scr) 加载屏幕。

零件 (Parts)
控件可以包含多个 Parts。例如,按钮仅具有主要部分,而滑动条则由背景,指示器和旋钮组成。
控件名称的构造类似于 lvgl. + PART 。比如 lvgl.BTN_PART_MAIN 、 lvgl.SLIDER_PART_KNOB 。 通常在将样式添加到对象时使用 Parts。使用 Parts 可以将不同的样式分配给对象的不同 Parts。

状态
对象可以处于以下状态的组合:

lvgl.STATE_DEFAULT – 默认或正常状态
lvgl.STATE_CHECKED – 选中或点击
lvgl.STATE_FOCUSED – 通过键盘或编码器聚焦或通过触摸板/鼠标单击
lvgl.STATE_EDITED – 由编码器编辑
lvgl.STATE_HOVERED – 鼠标悬停(现在还不支持)
lvgl.STATE_PRESSED – 按下
lvgl.STATE_DISABLED – 禁用或无效
当用户按下,释放,聚焦等对象时,状态通常由库自动检测更改。 当然状态也可以手动检测更改。 要完全覆盖当前状态,调用 lvgl.obj_set_state(obj, part, lvgl.STATE…) 要设置或清除某个状态(但不更改其他状态),调用 lvgl.obj_add/clear_state(obj, part, lvgl.STATE_…) 可以组合使用状态值。例如: lvgl.obj_set_state(obj, part, lvgl.STATE_PRESSED)。

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

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

相关文章

【Jenkins】rpm方式安装Jenkins(2.401,jdk版本17)

目录 【Jenkins】rpm方式安装Jenkins 1、主机初始化 2、软件要求 RPM包安装的内容 配置文件说明 3、web操作 【Jenkins】rpm方式安装Jenkins 1、主机初始化 [rootlocalhost ~]# hostname jenkins[rootlocalhost ~]# bash[rootjenkins ~]# systemctl stop firewalld[roo…

YOLOv8教程系列:三、K折交叉验证——让你的每一份标注数据都物尽其用(yolov8目标检测+k折交叉验证法)

YOLOv8教程系列:三、K折交叉验证——让你的每一份标注数据都物尽其用(yolov8目标检测k折交叉验证法) 0.引言 k折交叉验证(K-Fold Cross-Validation)是一种在机器学习中常用的模型评估技术,用于估计模型的性…

Java详解编译型和解释型语言

在计算机的高级编程语言类型分为两种,分别是编译型和解释型,而Java既有编译型又有解释型 什么是编译型?什么是解释型? 字面上来说编译和解释都有‘翻译’的意思,而她们两个的区别是‘翻译’的时机不同,什…

自然语言处理从入门到应用——LangChain:链(Chains)-[通用功能:链的保存(序列化)与加载(反序列化)]

分类目录:《自然语言处理从入门到应用》总目录 本文介绍了如何将链保存(序列化)到磁盘和从磁盘加载(反序列化)。我们使用的序列化格式是json或yaml。目前,只有一些链支持这种类型的序列化。随着时间的推移&…

Python采集电商平台泳衣数据进行可视化分析

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 环境使用: python 3.8 解释器 pycharm 编辑器 模块使用: 第三方模块 需要安装 requests —> 发送 HTTP请求 内置模块 不需要安装 csv —> 数据处理中经常会用到的一种文件格式 第三方模块安装&#xff1a…

实验五 Linux 内核的安装与加载

【实验目的】 掌握 uboot 的使用方法,能够使用 uboot 安装和加载内核 【实验环境】 ubuntu 14.04 发行版FS4412 实验平台 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行,以“#”开头的命令表 示在开发板下执行 【实验步骤】 …

计算机视觉 -- 图像分割

文章目录 1. 图像分割2. FCN2.1 语义分割– FCN (Fully Convolutional Networks)2.2 FCN--deconv2.3 Unpool2.4 拓展–DeconvNet 3. 实例分割3.1 实例分割--Mask R-CNN3.2 Mask R-CNN3.3 Faster R-CNN与 Mask R-CNN3.4 Mask R-CNN:Resnet1013…

ES搭建集群

一、创建 elasticsearch-cluster 文件夹 创建 elasticsearch-7.8.0-cluster 文件夹,在内部复制三个 elasticsearch 服务。 然后每个文件目录中每个节点的 config/elasticsearch.yml 配置文件 node-1001 节点 #节点 1 的配置信息: #集群名称&#xff0…

【数据备份、恢复、迁移与容灾】上海道宁与云祺科技为企业用户提供云数据中心容灾备份解决方案

云祺容灾备份系统支持 主流虚拟化环境下的虚拟机备份 提供对云基础设施 云架构平台以及 应用系统的全方位数据保护 云祺容灾备份系统规范功能 增强决策能力 高效恢复数据至可用状态 有效降低恢复成本 更大限度减少业务中断时间 保障业务可访问性 开发商介绍 成都云祺…

Hadoop、Spark与Flink的基础架构及其关系和优异

Hadoop、Spark与Flink的基础架构及其关系和优异 前言Hadoop基础架构优点不足 Spark基础架构优点不足 Flink基础架构优点不足 结语:大数据框架的选择 前言 Hadoop、Spark和Flink是目前重要的三大分布式计算系统。它们都可以用于大数据处理,但在处理方式和…

LSTM数学计算公式

LSTM(长短期记忆网络)是一种循环神经网络(RNN)的变体,常用于处理时间序列相关的任务。下面将简要介绍LSTM的数学推导和公式模型。 在训练一般神经网络模型时,通常用,其中W为权重,X为输入&#…

算法通关村第九关——中序遍历与搜索树

1 中序遍历和搜索树原理 二叉搜索树按照中序遍历正好是一个递增序列。其比较规范的定义是: 若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不为空,则右子树所有节点的值均大于它的根节点的值&…

代码随想录算法训练营day42 | LeetCode 416. 分割等和子集

今天主要学习了一下01背包的二维数组和一维数组的做法,二维数组比较好理解,根据每次将不将物品i放入背包来充分的用到前面的数据遍历数组。两层for循环,物品个数放外边,背包重量放里边。二维数组遍历的时候,里层for循环…

【网络层协议】ARP攻击与欺骗常见的手段以及工作原理

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、ARP攻击的常见手段 第一种:IP…

【健康医疗】Axure用药提醒小程序原型图,健康管理用药助手原型模板

作品概况 页面数量:共 20 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:健康管理,用药助手 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本作品为「用药提醒」小程序原型图…

QT使用QXlsx实现对Excel sheet的相关操作 QT基础入门【Excel的操作】

准备:搭建环境引用头文件QT中使用QtXlsx库的三种方法 QT基础入门【Excel的操作】_吻等离子的博客-CSDN博客 #include "xlsxdocument.h"QTXLSX_USE_NAMESPACE // 添加Xlsx命名空间(https://github.com/dbzhang800/QtXlsxWriter) or QXLSX_USE_NAMESPACE // 添加Xl…

Spring Boot 知识集锦之actuator监控端点详解

文章目录 0.前言1.参考文档2.基础介绍默认支持的端点 3.步骤3.1. 引入依赖3.2. 配置文件3.3. 核心源码 4.示例项目5.总结 0.前言 背景: 一直零散的使用着Spring Boot 的各种组件和特性,从未系统性的学习和总结,本次借着这个机会搞一波。共同学…

Android NDK JNI与Java的相互调用

一、Jni调用Java代码 jni可以调用java中的方法和java中的成员变量,因此JNIEnv定义了一系列的方法来帮助我们调用java的方法和成员变量。 以上就是jni调用java类的大部分方法,如果是静态的成员变量和静态方法,可以使用***GetStaticMethodID、CallStaticObjectMethod等***。就…

『C语言』数据在内存中的存储规则

前言 小羊近期已经将C语言初阶学习内容与铁汁们分享完成,接下来小羊会继续追更C语言进阶相关知识,小伙伴们坐好板凳,拿起笔开始上课啦~ 一、数据类型的介绍 我们目前已经学了基本的内置类型: char //字符数据类型 short …

SpeedBI数据可视化工具:浏览器上做分析

SpeedBI数据分析云是一种在浏览器上进行数据可视化分析的工具,它能够将数据以可视化的形式呈现出来,并支持多种数据源和图表类型。 所有操作,均在浏览器上进行 在浏览器中打开SpeedBI数据分析云官网,点击【免费使用】进入&#…