实习技能记录【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 对象,并在创建小部件时默认应用这些样式。

相关推荐
望获linux2 天前
【Linux基础知识系列】第四十三篇 - 基础正则表达式与 grep/sed
linux·运维·服务器·开发语言·前端·操作系统·嵌入式软件
花小璇学linux3 天前
imx6ull-裸机学习实验11——高精度延时实验
imx6ull·嵌入式软件·linux学习·arm裸机学习
cykaw25903 天前
LVGL简介
lvgl
菜菜why7 天前
MSPM0G3507学习笔记(一) 重置版:适配逐飞库的ti板环境配置
笔记·学习·电赛·嵌入式软件·mspm0
望获linux7 天前
【实时Linux实战系列】CPU 隔离与屏蔽技术
java·linux·运维·服务器·操作系统·开源软件·嵌入式软件
望获linux8 天前
【Linux基础知识系列】第四十篇 - 定制彩色终端与 Prompt
linux·运维·前端·chrome·操作系统·开源软件·嵌入式软件
望获linux18 天前
【实时Linux实战系列】实时I/O操作与中断处理
linux·服务器·microsoft·操作系统·交互·rtos·嵌入式软件
南岩亦凛汀23 天前
在Linux下使用wxWidgets进行跨平台GUI开发(三)
c++·跨平台·gui·开源框架·工程实战教程
望获linux23 天前
【Linux基础知识系列】第二十八篇-管道与重定向的使用
linux·前端·chrome·操作系统·rtos·嵌入式软件
南岩亦凛汀1 个月前
使用wxWidgets进行跨平台GUI开发(附1)
跨平台·gui·开源框架·工程实战教程