欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 实习技能记录【2】-----LVGL[基本概念]

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

2025/4/18 16:58:04 来源:https://blog.csdn.net/m0_46451722/article/details/147067023  浏览:    关键词:实习技能记录【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 对象,并在创建小部件时默认应用这些样式。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词