实习技能记录【2】-----LVGL[基本概念]

LVGL主要概念

1. Screen (屏幕):

概念 : 屏幕是 LVGL 应用程序中的顶层容器。它是用户界面的根对象,所有的可见 UI 元素最终都会添加到某个屏幕上(通常是活动屏幕)。
功能 :

作为其他 UI 元素的父对象。

可以拥有自己的背景颜色、背景图片等样式。

LVGL 可以管理多个屏幕,但在任何给定时刻只有一个屏幕是"活动的"并显示给用户。

可以通过函数如 lv_scr_load()lv_scr_load_anim()来加载和切换不同的屏幕。

可以使用lv_screen_active()获取当前活动屏幕的指针。
本质 : 屏幕本身也是一个lv_obj_t对象,只是它是最顶层的,没有父对象(除了内部的显示驱动器)。

2. Widgets (小部件):

概念 : 小部件是预先构建的可交互或信息展示的 UI 组件,是构建用户界面的基本 building blocks。
功能 :

提供各种常见的 UI 元素,例如按钮 (Button)、标签 (Label)、滑块 (Slider)、开关 (Switch)、图表 (Chart)、列表 (List)、选项卡视图 (Tabview)、仪表盘 (Gauge) 等等。

每个小部件都封装了特定的功能和视觉表现。

可以通过 API 函数来创建、配置和控制小部件的行为和外观。

可以响应用户输入(通过 Events)。

可以通过 Styles 进行定制。
本质: 每个小部件都是由一个或多个底层的 LVGL 对象(lv_obj_t)组合而成,并提供了特定的 API 来简化其使用。

3. Events (事件):

概念 : 事件是发生在 UI 对象上的动作或状态改变,例如用户的点击、滑动、值改变,或者对象自身的创建、删除、尺寸改变等。
功能 :

允许应用程序响应用户的交互和 UI 的状态变化。

可以通过为对象注册事件回调函数来处理特定的事件。

LVGL 定义了丰富的事件类型(例如
LV_EVENT_CLICKED,
LV_EVENT_VALUE_CHANGED,
LV_EVENT_DRAW_MAIN,
LV_EVENT_DELETE 等)。

一个对象可以注册多个事件回调函数来处理不同的事件。

事件回调函数可以接收事件发生的对象、事件代码以及用户自定义的数据作为参数。
本质: LVGL 内部维护着一套事件管理机制,当特定事件发生时,它会遍历注册到该对象上的回调函数并执行它们。

4. Parts (部件):

概念 : 许多 LVGL 小部件并非单一的视觉元素,而是由多个可独立样式化的"部件"组成。
功能 :

允许对小部件的不同视觉组成部分进行精细的样式控制。

例如,按钮可能包含一个主背景部件 (LV_PART_MAIN) 和一个按下时的效果部件 (LV_PART_PRESSED)。滑块可能包含一个背景 (LV_PART_MAIN)、一个指示器 (LV_PART_INDICATOR) 和一个旋钮 (LV_PART_KNOB)。

在设置样式时,可以指定要应用样式的部件。

通过 lv_obj_get_part() 等函数可以访问小部件的特定部件。
本质: 部件是小部件内部组织结构的一种逻辑划分,每个部件仍然是一个 lv_obj_t 对象或其概念上的组成部分。

5. States (状态):

概念 : UI 对象可以处于不同的状态,这些状态会影响其视觉外观和行为。
功能 :

LVGL 定义了多种内置状态(例如 LV_STATE_DEFAULT (默认), LV_STATE_PRESSED (按下), LV_STATE_FOCUSED (聚焦), LV_STATE_EDITED (编辑), LV_STATE_DISABLED (禁用), LV_STATE_CHECKED (选中) 等)。

一个对象可以同时处于多个状态(例如,一个被禁用的按钮也可能被按下)。

样式可以根据对象的状态进行定制,使得对象在不同交互阶段呈现不同的外观(例如,按下按钮时颜色变深)。

在设置样式时,可以使用状态标志来指定样式只在特定状态下生效。
本质 : 对象内部维护着一个状态标志位,当对象的交互或属性发生变化时,这个标志位会被更新。

6. Styles (样式):

概念 : 样式定义了 UI 对象的外观属性,例如背景颜色、边框宽度、字体、文本颜色、内边距、外边距、圆角等等。
功能 :

允许开发者定制 UI 元素的外观。

样式是可重用的,可以应用到多个对象或对象的不同部件和状态。

可以创建和修改样式对象 (lv_style_t)。

可以使用 lv_style_set_... 系列函数设置样式的各种属性。

可以使用 lv_obj_add_style() 将一个或多个样式应用到一个对象上,并可以指定应用的部件和状态。

样式可以层叠,后添加的样式会覆盖之前添加的相同属性。
本质: 样式存储在一个 lv_style_t 结构体中,包含了各种视觉属性的值。

7. Themes (主题):

概念 : 主题是一组预定义的样式集合,旨在为应用程序提供一致的视觉风格。
功能 :

提供了一种快速且简单的方式来为整个应用程序设置统一的外观。

LVGL 内置了多个主题(例如默认主题、蒙特塞拉特主题等),并且也支持自定义主题。

主题通常会为各种常用的小部件定义好在不同状态下的默认样式。

可以通过 lv_theme_set_act() 函数来激活一个主题。

即使使用了主题,仍然可以针对特定的对象或部件添加或修改自定义样式,以实现更精细的控制。
本质: 主题通常是一个初始化函数,它会创建一系列预定义的 lv_style_t 对象,并在创建小部件时默认应用这些样式。

相关推荐
DreamNotOver3 天前
自动提取pdf公式 ➕ 输出 LaTeX
python·pdf·gui·提取公式
爱学电子的刻刻帝3 天前
基于FreeRTOS和LVGL的多功能低功耗智能手表
stm32·freertos·lvgl·智能手表
University of Feriburg5 天前
1-linux的基础知识
linux·笔记·学习·嵌入式实时数据库·嵌入式软件·初学者
University of Feriburg6 天前
4-c语言中的数据类型
linux·c语言·笔记·学习·嵌入式实时数据库·嵌入式软件
Hungry_1111 天前
SPI通信协议
单片机·嵌入式硬件·spi·嵌入式软件
charlie11451419114 天前
从0开始——在PlatformIO下开展STM32单片机的HAL库函数编程指南
stm32·单片机·嵌入式硬件·学习·嵌入式软件
Hungry_1115 天前
STM32 IIC通信
stm32·单片机·iic·嵌入式软件·通信协议
ddatalent19 天前
如何将maltab开发的app嵌入PPT中展示并且可实时互动
matlab·gui·ppt·web server·web browser·web viewer
长安er20 天前
异步编程与流水线架构:从理论到高并发
数学建模·架构·gui·多线程·异步·流水线·全息