一个为 LVGL 精心定制的 APP 页面管理器,简单易用,功能强大,支持多种酷炫动画
简单、易用、强大
#include "pm.h"
void main()
{
lv_pm_init();
lv_pm_page_t *home = lv_pm_create_page(0);
page->onLoad = page_home_onLoad; // 需要你实现的页面函数
page->unLoad = page_home_unLoad; // 需要你实现的页面函数
lv_pm_open_page(0, NULL);
}
// home.c
#include "home.h"
void page_home_onLoad(lv_obj_t *page)
{
// 所有对象都挂载在 page 下面,页面管理器会自动帮你管理内存
lv_obj_t *label = lv_label_create(page);
lv_label_set_text(label, "hello home page");
}
void page_home_unLoad(lv_obj_t *page)
{
// onLoad 和 unLoad 必须实现,所有挂载在 page 下的对象都会自动释放
// 你只需要释放自己申请的内存
}
在 examples 下自带了可运行的例程,你可以通过下面的命令编译并运行:
根目录
和lvgl-simulator-x
都执行一遍 git submodule update --init
build
文件夹并进入cmake ../examples
make
./lvgl-pm-demo
默认运行的是 helloworld,你可以在 examples/CMakeLists.txt
文件开头设置不同的目录名来运行不同的例程
这个函数必须在使用任何页面管理器 API 之前调用
返回 0 表示 OK,其它值表示错误,你需要自己处理错误
创建一个路由并且指定路由标识 ID,这个 ID 在打开页面时会用到,必须唯一。
一般 ID 从下标 0 开始,你可以按照页面的顺序来分配 ID
注意:默认路由表长度是 10,所以你不能使用超过长度的 ID 值,如果大于 10,你可以使用
#define LV_PM_PAGE_NUM 20
指定长度
创建好路由后,你可以注册页面的生命周期函数了,此时并不会真正的创建页面
下面 2 个生命周期是必须实现的:
根据指定的路由 ID 打开页面,此时会调用 onLoad 真正创建页面
参数 behavior
:指定打开页面的行为,过渡动画,打开方式,动画方向。默认为 NULL
注意:为了页面代码简单,我们并没有实现多实例。所以一个路由 ID 同时只能被打开一次,打开 2 次以上的行为是未定义的,会产生不可预期的错误 在未来的版本中,我们会支持页面多实例
示例:
#include "pm.h"
lv_pm_open_options_t options = {
.animation = LV_PM_ANIMA_SLIDE // 使用滑动动画打开页面
};
lv_pm_open_page(0, &options);
// 或者使用默认行为 lv_pm_open_page(0, NULL);
关闭当前页面并且显示上一个页面。如果当前只有一个页面或者没有打开页面,则此函数什么也不做
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。