当前位置: 首页 > news >正文

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


文章转载自:
http://ann.hfytgp.cn
http://casuistic.hfytgp.cn
http://antibody.hfytgp.cn
http://allotransplant.hfytgp.cn
http://areologically.hfytgp.cn
http://anglomaniac.hfytgp.cn
http://barkeeper.hfytgp.cn
http://chivalrous.hfytgp.cn
http://ananas.hfytgp.cn
http://anethole.hfytgp.cn
http://caddis.hfytgp.cn
http://arborvitae.hfytgp.cn
http://campylotropous.hfytgp.cn
http://bruxism.hfytgp.cn
http://canonize.hfytgp.cn
http://ariot.hfytgp.cn
http://balconet.hfytgp.cn
http://asthenopic.hfytgp.cn
http://abstentious.hfytgp.cn
http://bacteroid.hfytgp.cn
http://catachrestial.hfytgp.cn
http://burlesque.hfytgp.cn
http://bawdy.hfytgp.cn
http://aesculapius.hfytgp.cn
http://buddhistical.hfytgp.cn
http://bedu.hfytgp.cn
http://accreditation.hfytgp.cn
http://aeger.hfytgp.cn
http://augural.hfytgp.cn
http://anlistatig.hfytgp.cn
http://www.dtcms.com/a/119808.html

相关文章:

  • opencv无法设置禁用RGB转换问题
  • centos练习docker<基础>
  • 蓝桥杯第十一届省赛C++B组真题解析
  • 特权FPGA之UART串口
  • ⭐算法OJ⭐数据流的中位数【最小堆】Find Median from Data Stream
  • leetcode0287. 寻找重复数-medium
  • 各种排序思路及实现
  • CentOS8.5 安装 LLaMA-Factory
  • 什么是强缓存和协商缓存?它们的工作原理是什么?
  • 软件工程面试题(三十七)
  • 2025年3月GESP C++四级等级考试真题——二阶矩阵
  • VBA将Word文档内容逐行写入Excel
  • WGAN-GP 原理及实现(pytorch版)
  • MySQL 备份与恢复:数据库的灾难保险计划
  • 兔单B细胞单抗制备服务
  • 蓝桥杯嵌入式十五届模拟二(串口DMA,占空比的另一种测量方式)
  • Python人工智能算法 基于遗传算法解决流水车间调度问题
  • (学习总结33)Linux Ext2 文件系统与软硬链接
  • js 效果展示
  • 机器学习 | 强化学习 vs 深度学习 vs 深度强化学习 | 概念向
  • 初入Web网页开发
  • 基于大模型的阵发性室上性心动过速风险预测与治疗方案研究
  • mySQL数据库和mongodb数据库的详细对比
  • LeetCode】寻找重复子树:深度解析与高效解法
  • Dynamics 365 Business Central Recurring Sales Lines 经常购买销售行 来作 订阅
  • 2025年美国CPI数据公布时间表
  • 循环神经网络 - 参数学习之实时循环学习
  • UML类图综合实验三补档
  • 类初始化、类加载、垃圾回收---JVM
  • Heap_dijkstra