【LVGL学习笔记】(二) 基础概念

本文介绍LVGL,一个轻量级、开源的嵌入式GUI库。涵盖框架搭建、对象管理、事件处理、输入设备配置、字体及动画设置等内容,助力开发者快速掌握嵌入式GUI设计。

LVGL全程LittleVGL,是一个轻量化的,开源的,用于嵌入式GUI设计的图形库。并且配合LVGL模拟器,可以在电脑对界面进行编辑显示,测试通过后再移植进嵌入式设备中,实现高效的项目开发。
在这里插入图片描述
LVGL中文教程手册:百问网LVGL中文教程手册文档

以下的内容均是以VS环境下的LVGL模拟器进行展开,之后会再针对移植的事项进行说明。

一. 框架

学过QT或者其他UI开发的选手应该了解:
UI界面就是由一个个控件,以及控件之间的相互关系(如父子继承关系,事件触发等)组成的。每个控件都有其独有的属性(如样式,触发函数等),LVGL也是如此。
LVGL还带有主题功能,能够便捷地统一控件样式。
因为是面向嵌入式设备进行开发,LVGL还需要有硬件相关的驱动。

// 主函数代码
int main(int argc, char** argv)
{
   
   	
	/*Initialize LittlevGL*/
	lv_init();

	/*Initialize the HAL for LittlevGL*/
	hal_init();

	/*
	 * Demos, benchmarks, and tests.
	 */
	 lv_demo();
	 
	while (1)
	{
   
   
		/* Periodically call the lv_task handler.
		* It could be done in a timer interrupt or an OS task too.*/
		lv_task_handler();
		Sleep(10);       /*Just to let the system breathe */
	}

	return 0;
}
  1. 对于功能实现,我们需要做的,就是将上面的lv_demo替换为我们自己写的函数。
  2. 因为lvgl内部是以不同线程的形式来处理各项任务,如刷屏等,并且我们也可以注册任务的,所以需要循环调用lv_task_handler来进行任务处理。
  3. lv_task_handler的调用除了在主函数的while中进行调用,也可以在OS或者定时器中断中进行调用,比如STM32使用FreeRTOS的一个线程进行处理。

二. 对象

对象具有各种属性,如位置尺寸等。
可以使用lv_obj_set _… 和 **lv_obj_get _…**来设置及获取属性信息。

/* 设置按键的大小 */
lv_obj_set_size(btn, 100, 50);   

/* 获取按键的父级指针 */
lv_obj_get_parent(btn)

不同控件的特殊属性可以使用带控件名称的函数进行实现。

/* 设置滑块的最小值和最大值 */
lv_slider_set_range(slider1, 0, 100);   

/* 设置回调函数 */
lv_slider_set_action(slider1, my_action);       

工作机制

1. 亲子结构
父对象可以作为其子对象的容器。每个对象只能一个父对象(屏幕除外),但是一个父对象可以有无限多个子对象。
父对象的类型没有限制,但是有特殊的父对象(例如,按钮)和特殊的子对象(例如,标签)。
2. 子对象仅在父对象的范围内可见
3. 子对象的位置是相对于父对象的位置,父对象移动时,两者相对位置不变。

创建和删除对象

/**
 * @param 指向父对象的指针。创建屏幕时以 NULL 作为父级。
 * @param 此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来
 */
lv_obj_t * lv_ <type>_create(lv_obj_t * parent, lv_obj_t * copy);

/* 所有对象类型都有一个通用的删除功能。它删除对象及其所有子对象 */
void lv_obj_del(lv_obj_t * obj);

/* 异步删除 */
void lv_obj_del_async(lv_obj_t * obj)

/*  删除对象的所有子对象(但不会删除对象本身) */
void lv_obj_clean(lv_obj_t * obj);

屏幕对象

/* 创建屏幕 */
lv_obj_t * scr = lv_obj_create
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煜个头头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值