合宙Air724UG LuatOS-Air LVGL API控件-页面 (Page)
页面 (Page)

当控件内容过多,无法在屏幕内完整显示时,可让其在 页面 内显示。
示例代码
page = lvgl.page_create(lvgl.scr_act(), nil)
lvgl.obj_set_size(page, 150, 200)
lvgl.obj_align(page, nil, lvgl.ALIGN_CENTER, 0, 0)label = lvgl.label_create(page, nil)
lvgl.label_set_long_mode(label, lvgl.LABEL_LONG_BREAK)
lvgl.obj_set_width(label, lvgl.page_get_width_fit(page)) lvgl.label_set_text(label,
[[Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore
eu fugiat nila pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.]])
创建
通过函数 lvgl.page_create 可以创建一个页面
page = lvgl.page_create(lvgl.scr_act(), nil)
添加内容
页面对象可以像容器一样设置各个方向上的匹配模式,可以把需要显示的对象添加进页面进行显示,页面可以作为控件的父容器。就像下面这样,在页面中添加了一个标签。
label = lvgl.label_create(page, nil)
滚动条
页面的滚动条可以通过 lvgl.page_set_scrlbar_mode 函数进行设置,页面的滚动条设置有以下几个参数:
lvgl.SCRLBAR_MODE_OFF
lvgl.SCRLBAR_MODE_ON
lvgl.SCRLBAR_MODE_DRAG
lvgl.SCRLBAR_MODE_AUTO
lvgl.SCRLBAR_MODE_HIDE
lvgl.SCRLBAR_MODE_UNHIDE
这些参数代表的含义如下:lvgl.SCRLBAR_MODE_OFF 是从始至终不显示滚动条。lvgl.SCRLBAR_MODE_ON 是一直会显示滚动条。lvgl.SCRLBAR_MODE_DRAG 是只有在拖动页面时才会显示滚动条。lvgl.SCRLBAR_MODE_AUTO 表示自适应,只有在页面没有办法完整显示的时候才会启用滚动条,这是个默认选项。lvgl.SCRLBAR_MODE_HIDE 会将滚动条隐藏。lvgl.SCRLBAR_MODE_UNHIDE 会把隐藏的滚动条重新显示。
下面我们看下 lvgl.SCRLBAR_MODE_DRAG 的一个显示效果,只在页面滚动时显示滚动条。
lvgl.page_set_scrollbar_mode(page, lvgl.SCRLBAR_MODE_DRAG)

焦点对象
可以通过设置焦点对象来自动滚动页面进行一些内容展示。例如,首先在页面比较偏的一个位置创建个文本标签。
hello = lvgl.label_create(page, nil)
lvgl.label_set_text(hello, "hello")
lvgl.obj_set_pos(hello, 150, 190)
然后把这个文本设置为焦点对象,等待 4S 之后,再将焦点对象移回主控件。
lvgl.page_set_anim_time(page, 4000)
lvgl.page_focus(page, hello, lvgl.ANIM_ON)
sys.wait(4000)
lvgl.page_focus(page, label, lvgl.ANIM_ON)
sys.wait(4000)
效果展示如下,实际上可以设置多个控件,在页面循环进行展示。

动画
其实除了对焦控件这种展示动画以外,页面控件可以设置一个边缘闪烁效果,在页面滚动达到边缘的时候会显示一段弧线。
lvgl.page_set_edge_flash(page, true)

滚动传播
如果在一个页面 A 之中创建了一个页面 B,那么在页面 B 滚动到边缘的时候时候就停止了,无法继续滚动。

但是如果设置了滚动传播,在子控件滚动到边缘的时候,会将滚动事件传给它的父对象。
lvgl.page_set_scroll_propagation(page2, true)

清除页面
页面上创建的对象都可以通过 lvgl.page_clean(page) 进行清除。
API
lvgl.page_create
| 调用 | lvgl.page_create(par, copy) |
|---|---|
| 功能 | 创建一个页面对象 |
| 返回 | 指向创建的页面对象的指针 |
| 参数 | |
| par | 指向对象的指针, 它将是新键对象的父对象 |
| copy | 指向页面对象的指针, 如果不为 nil, 则将从其复制新对象 |
lvgl.page_clean
| 调用 | lvgl.page_clean(page) |
|---|---|
| 功能 | 清除页面的所有子对象 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_scrollable
| 调用 | lvgl.page_get_scrollable(page) |
|---|---|
| 功能 | 获取页面的可滚动对象 |
| 返回 | 指向容器的指针,该容器是页面的可滚动部分 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_anim_time
| 调用 | lvgl.page_get_anim_time(page) |
|---|---|
| 功能 | 获取页面的动画时间 |
| 返回 | 页面的动画时间,以毫秒为单位 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_anim_time
| 调用 | lvgl.page_get_anim_time(page, mode) |
|---|---|
| 功能 | 在页面上设置滚动条模式 |
| 参数 | |
| page | 指向页面对象的指针 |
| mode | 滚动条模式 |
| lvgl.SCRLBAR_MODE_OFF | |
| lvgl.SCRLBAR_MODE_ON | |
| lvgl.SCRLBAR_MODE_DRAG | |
| lvgl.SCRLBAR_MODE_AUTO | |
| lvgl.SCRLBAR_MODE_HIDE | |
| lvgl.SCRLBAR_MODE_UNHIDE |
lvgl.page_get_anim_time
| 调用 | lvgl.page_get_anim_time(page, time) |
|---|---|
| 功能 | 设置页面的动画时间 |
| 参数 | |
| page | 指向页面对象的指针 |
| time | 页面的动画时间 |
lvgl.page_set_scroll_propagation
| 调用 | lvgl.page_set_scroll_propagation(page, en) |
|---|---|
| 功能 | 设置滚动传播 |
| 参数 | |
| page | 指向页面对象的指针 |
| en | true 启用滚动传播, false 禁用滚动传播。 |
lvgl.page_set_edge_flash
| 调用 | lvgl.page_set_edge_flash(page, en) |
|---|---|
| 功能 | 设置边缘闪烁效果 |
| 参数 | |
| page | 指向页面对象的指针 |
| en | true 启用边缘闪烁, false 禁用边缘闪烁。 |
lvgl.page_set_scrollable_fit4
| 调用 | lvgl.page_set_scrollable_fit4(page, left,right,top,bottom) |
|---|---|
| 功能 | 设置容器在四个方向上的拟合方式,拟合方式设置跟容器是一致的。 |
| 参数 | |
| page | 指向页面对象的指针 |
| left | 左边的拟合方式 |
| right | 右边的拟合方式 |
| top | 顶部的拟合方式 |
| bottom | 底部的拟合方式 |
lvgl.page_set_scrollable_fit4
| 调用 | lvgl.page_set_scrollable_fit4(page, left,right,top,bottom) |
|---|---|
| 功能 | 设置容器在四个方向上的拟合方式,拟合方式设置跟容器是一致的。 |
| 参数 | |
| page | 指向页面对象的指针 |
| left | 左边的拟合方式 |
| right | 右边的拟合方式 |
| top | 顶部的拟合方式 |
| bottom | 底部的拟合方式 |
lvgl.page_set_scrollable_fit2
| 调用 | lvgl.page_set_scrollable_fit2(page, hor, ver) |
|---|---|
| 功能 | 设置水平和垂直方向的拟合方式 |
| 参数 | |
| page | 指向页面对象的指针 |
| hor | 水平方向上的拟合方式 |
| ver | 垂直方向上的拟合方式 |
lvgl.page_set_scrollable_fit
| 调用 | lvgl.page_set_scrollable_fit(page, fit) |
|---|---|
| 功能 | 一次性设置页面四个方向上的拟合方式 |
| 参数 | |
| cont | 指向页面对象的指针 |
| fit | 页面四个方向上的拟合方式 |
lvgl.page_set_scrl_width
| 调用 | lvgl.page_set_scrl_width(page, w) |
|---|---|
| 功能 | 设置页面可滚动部分的宽度 |
| 参数 | |
| cont | 指向页面对象的指针 |
| w | 页面可滚动部分的宽度 |
lvgl.page_set_scrl_height
| 调用 | lvgl.page_set_scrl_height(page, h) |
|---|---|
| 功能 | 设置页面可滚动部分的高度 |
| 参数 | |
| cont | 指向页面对象的指针 |
| h | 页面可滚动部分的高度 |
lvgl.page_set_scrl_layout
| 调用 | lvgl.page_set_scrl_layout(page, layout) |
|---|---|
| 功能 | 设置页面的布局 |
| 参数 | |
| cont | 指向页面对象的指针 |
| layout | 页面的布局,可以参考容器部分 |
lvgl.page_get_scrollbar_mode
| 调用 | lvgl.page_get_scrollbar_mode(page) |
|---|---|
| 功能 | 获取滚动条设置的模式 |
| 返回 | 滚动条设置的模式 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_scroll_propagation
| 调用 | lvgl.page_get_scroll_propagation(page) |
|---|---|
| 功能 | 获取是否设置滚动传播 |
| 返回 | 滚动传播属性 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_edge_flash
| 调用 | lvgl.page_get_edge_flash(page) |
|---|---|
| 功能 | 获取是否设置滚动传播 |
| 返回 | 滚动传播属性 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_scrl_width
| 调用 | lvgl.page_get_scrl_width(page) |
|---|---|
| 功能 | 获取页面可滚动部分的宽度 |
| 返回 | 页面可滚动部分的宽度 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_scrl_height
| 调用 | lvgl.page_get_scrl_height(page) |
|---|---|
| 功能 | 获取页面可滚动部分的高度 |
| 返回 | 页面可滚动部分的高度 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_scrl_layout
| 调用 | lvgl.page_get_scrl_layout(page) |
|---|---|
| 功能 | 获取页面的布局 |
| 返回 | 页面的布局 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_scrl_fit_left
| 调用 | lvgl.page_get_scrl_fit_left(page) |
|---|---|
| 功能 | 获取页面左边的拟合方式 |
| 返回 | 页面左边的拟合方式 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_scrl_fit_right
| 调用 | lvgl.page_get_scrl_fit_right(page) |
|---|---|
| 功能 | 获取页面右边的拟合方式 |
| 返回 | 页面右边的拟合方式 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_scrl_fit_top
| 调用 | lvgl.page_get_scrl_fit_top(page) |
|---|---|
| 功能 | 获取页面上面的拟合方式 |
| 返回 | 页面上面的拟合方式 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_get_scrl_fit_bottom
| 调用 | lvgl.page_get_scrl_fit_bottom(page) |
|---|---|
| 功能 | 获取页面下面的拟合方式 |
| 返回 | 页面下面的拟合方式 |
| 参数 | |
| page | 指向页面对象的指针 |
lvgl.page_focus
| 调用 | lvgl.page_focus(page, obj, anim) |
|---|---|
| 功能 | 设置页面的焦点对象 |
| 参数 | |
| page | 指向页面对象的指针 |
| obj | 需要设置焦点的对象 |
| anim | 是否启用动画 |
| lvgl.ANIM_ON 启用动画 | |
| lvgl.ANIM_OFF 不启用动画 |
相关文章:
合宙Air724UG LuatOS-Air LVGL API控件-页面 (Page)
页面 (Page) 当控件内容过多,无法在屏幕内完整显示时,可让其在 页面 内显示。 示例代码 page lvgl.page_create(lvgl.scr_act(), nil) lvgl.obj_set_size(page, 150, 200) lvgl.obj_align(page, nil, lvgl.ALIGN_CENTER, 0, 0)label lvgl.label_crea…...
mongodb数据库操作
1、启动mongodb /usr/local/mongodb/bin/mongod --dbpath /var/mongodb/data/--logpath /var/mongodb/logs/log.log &在mongodb启动命令中 --dbpath 指定mongodb的数据存储路径 --logpath 指定mongodb的日志存储路径 2、停止mongodb 第一步先进入mongo命令行模式 第二…...
第 2 章 线性表 ( 双链循环线性表(链式存储结构)实现)
1. 背景说明 2. 示例代码 1) status.h /* DataStructure 预定义常量和类型头文件 */#ifndef STATUS_H #define STATUS_H#define CHECK_NULL(pointer) if (!(pointer)) { \printf("FuncName: %-15s Line: %-5d ErrorCode: %-3d\n", __func__, __LINE__, ERR_NULL_PTR…...
redis在日常开发工作中的常见用法
redis是一款内存型数据库,在开发工作中经常用到,功能强大; 特别开一篇文章用来记录一下它的常见用法,算是一种总结; 它最主要的特点就是高可用的,速度快,分布式;有人说速度快&…...
小程序实现下拉刷新
小程序实现下拉刷新可以通过使用组件scroll-view和事件onPullDownRefresh来实现。 scroll-view组件的使用 在需要下拉刷新的页面的wxml文件中,通过scroll-view组件包裹需要滚动的内容,设置scroll-y属性为true,表示允许竖向滚动。示例代码如…...
Day 36 贪心算法 part05 : 435. 无重叠区间 763.划分字母区间 56. 合并区间
56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:inte…...
使用Python将网页数据保存到NoSQL数据库的方法和示例
随着大数据和人工智能技术的快速发展,对于大规模数据的处理需求日益增多。NoSQL数据库作为一种新兴的数据存储解决方案,具有高可扩展性、高性能和灵活性数据模型等优势,已经在许多行业得到广泛应用。传统的关系型数据库在处理海量数据时可能会…...
两个路由器如何连接设置的方法攻略
一、前言 随着智能家居时代来临,家里的网络部署需求开始复杂起来。往往一个路由器已经不能满足需求或者不利于拓展。两个路由器连接最常见的情况是家中已有一个路由器,并且已经通过这个路由器来正常上网。现在是因某些原因想在不改变已经在用的路由器的设…...
分类任务评价指标
分类任务评价指标 分类任务中,有以下几个常用指标: 混淆矩阵准确率(Accuracy)精确率(查准率,Precision)召回率(查全率,Recall)F-scorePR曲线ROC曲线 1. 混…...
c++静态成员
目录 静态成员 静态成员变量 静态成员函数 const 静态成员属性 静态成员实现单例模式 静态成员 在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字 static 声明为静态的,称为静态成员。 不管这…...
go-zero直连与etcd服务注册中心
go-zero中直连方式 在使用grpc是最重要的就是pb文件了,生成的pb文件,通过pb文件可以生成grpc的客户端和服务端,那么客户端和服务端就可以直连了,再次基础上可以引入etcd实现服务注册。 所有的代码都需要开发者编写,包…...
Kotlin File writeText appendText appendBytes readBytes readText
Kotlin File writeText appendText appendBytes readBytes readText import java.io.Filefun main(args: Array<String>) {val filePath "./myfile.txt"val file File(filePath)file.writeText("hello,") //如果原有文件有内容,将完全覆…...
常见缺少msvcp140.dll问题及解决方法,分享多种方法帮你解决
在日常使用电脑的过程中,我们可能会遇到各种问题,比如电脑提示msvcp140.dll文件丢失。这个问题通常是由于某些程序或游戏需要这个dll文件来正常运行,但是由于某种原因,这个文件被误删或者损坏了。那么,如何解决这个问题…...
【K210+ESP8266图传上位机开发】TCP server + JPEG图像解析上位机开发
本文章主要记录基于 【K210-ESP8266】 图传和显示的过程,上位机开发过程,系统架构和下位机开发请参考文章: 【K210-ESP8266】开发板上传图像数据到服务器并实时显示 💖 作者简介:大家好,我是喜欢记录零碎知…...
Linux查看当前文件夹的大小
在Linux中,可以使用du(disk usage)命令来查看当前文件夹的大小。以下是一些使用du的方法: 查看当前文件夹的大小: 为了查看当前文件夹的总大小,可以在文件夹中运行: du -sh .这里: -…...
YOLO目标检测——密集人群人头数据集+已标注yolo格式标签下载分享
实际项目应用:城市安防、交通管理、社会研究、商业应用、等多个领域数据集说明:YOLO密集人群人头目标检测数据集,真实场景的高质量图片数据,数据场景丰富,图片格式为jpg,共4300张图片。标注说明:…...
论文精读 —— Gradient Surgery for Multi-Task Learning
文章目录 Multi-task Learning和 PCGrad 方法简介论文信息论文核心图摘要翻译引言翻译2 使用PCGrad进行多任务学习2.1 基本概念:问题和符号表示2.2 三重悲剧:冲突的梯度,主导的梯度,高曲率2.3 PCGrad:解决梯度冲突2.4 …...
【VS Code插件开发】常见自定义命令(七)
🐱 个人主页:不叫猫先生,公众号:前端舵手 🙋♂️ 作者简介:前端领域优质作者、阿里云专家博主,共同学习共同进步,一起加油呀! 📢 资料领取:前端…...
Spring Cloud服务发现与注册的原理与实现
Spring Cloud服务发现与注册的原理与实现 一、简介1 服务发现的定义2 服务发现的意义 二、Spring Cloud服务注册与发现的实现1 Spring Cloud服务注册1.1 服务注册的基本框架1.2 服务注册的实现方式 2 Spring Cloud服务发现2.1 服务发现的基本框架2.2 服务发现的实现方式 三、Sp…...
FFmpeg入门之简单介绍
FFmpeg是什么意思: Fast Forward Moving Picture Experts Group ffmpeg相关文档: Documentation FFmpeg ffmpeg源码下载: https://git.videolan.org/git/ffmpeg.git https://github.com/FFmpeg/FFmpeg.git FFmpeg能做什么? 多种媒体格式的封装与解封装 : 1.多种音…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
