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

页面 (Page)

page.png

当控件内容过多,无法在屏幕内完整显示时,可让其在 页面 内显示。

示例代码

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)

滚动条.gif

焦点对象

可以通过设置焦点对象来自动滚动页面进行一些内容展示。例如,首先在页面比较偏的一个位置创建个文本标签。

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)

效果展示如下,实际上可以设置多个控件,在页面循环进行展示。

jdfw7.gif

动画

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

lvgl.page_set_edge_flash(page, true)

jdfw.gif

滚动传播

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

jdfw2.gif


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

lvgl.page_set_scroll_propagation(page2, true)

jdfw3.gif

清除页面

页面上创建的对象都可以通过 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指向页面对象的指针
entrue 启用滚动传播, false 禁用滚动传播。

lvgl.page_set_edge_flash

调用lvgl.page_set_edge_flash(page, en)
功能设置边缘闪烁效果
参数
page指向页面对象的指针
entrue 启用边缘闪烁, 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 不启用动画

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/70167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring Boot】SpringBoot 2.6.6 集成 SpringDoc 1.6.9 生成swagger接口文档

文章目录 前言一、SpringDoc是什么?二、使用步骤1.引入库2.配置类3.访问测试 总结其他配置立个Flag 前言 之前常用的SpringFox在2020年停止更新了,新项目集成SpringFox出来一堆问题,所以打算使用更活跃的SpringDoc,这里简单介绍一…

Nomad 系列-快速上手

系列文章 Nomad 系列文章 Nomad 重要术语 Nomad 安装设置相关术语 agent - 代理。Agent 是在 Server(服务器) 或 Client(客户端) 模式下运行的 Nomad 进程。client - 客户端。Nomad 客户端负责运行分配给它的任务。它还向服务器…

centos编译升级cmake,痛苦的Linux小白

环境 root 用户 下载 cmake官网下载地址:https://cmake.org/download/ 获取下载地址,右击cmake-3.27.4.tar.gz 命令行输入链接地址,下载 wget https://github.com/Kitware/CMake/releases/download/v3.27.4/cmake-3.27.4.tar.gz解压 tar -zx…

基于Pytest+Allure+Excel的接口自动化测试框架

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。 Allure 是由 Java 语言开发…

鼠标键盘管理 ShareMouse for Mac最新

软件“ShareMouse”允许您通过单个鼠标和键盘控制多台计算机: 将鼠标移动到您想要控制的计算机的监视器上,指针会神奇地跳转到该计算机。任何鼠标和键盘输入都会传输到相应的计算机。 与网络KVM类似,ShareMouse通过本地LAN传输鼠标移动和点…

【ARM AMBA5 CHI 入门 12 -- CHI 总线学习 】

文章目录 介绍CHI 特点Layers of the CHI architectureTopology Node TypeTransaction 分类Transaction 路由SAM 介绍Node ID 节点间数据怎么传输的呢? 介绍 CHI 的全称是 Coherent Hub Interface。所以从名字就能看出,CHI要解决什么问题了。按照惯例&a…

CentOS7安装时直接跳过了安装信息摘要页面的解决方法

最近在配置Hadoop虚拟机的时候,创建的centos7虚拟机在安装信息摘要时直接自动跳过,直接跳到设置用户名和密码,在重复多次的重新删除安装后发现了问题所在: 在进行到选择操作系统来源时,注意是否出现“该操作系统将使用…

【vue2第十五章】VueRouter 路由配置(VueRouter)与使用 和 router-link与router-view标签使用

单页面应用 与 多页面应用 单页面应用(Single-Page Application,SPA)和多页面应用(Multi-Page Application,MPA)是 Web 应用程序的两种不同架构方式。它们在页面加载和交互方式上有所区别。 单页面应用&a…

GitHub个人访问凭证在哪看

要查看 GitHub 个人访问凭证(Personal Access Token),请按照以下步骤进行操作: 登录到你的 GitHub 帐户。点击右上角的头像,然后选择 “Settings”(设置)。在左侧导航栏中,选择 “D…

iOS 17中的Safari配置文件改变了游戏规则,那么如何设置呢

Safari在iOS 17中最大的升级是浏览配置文件——能够在一个应用程序中创建单独的选项卡和书签组。这些也可以跟随你的iPad和Mac,但在本指南中,我们将向你展示如何使用运行iOS 17的iPhone。 你可能有点困惑,为什么Safari中没有明显的位置可以添…

【洛谷 P1328】[NOIP2014 提高组] 生活大爆炸版石头剪刀布 题解(模拟+向量)

[NOIP2014 提高组] 生活大爆炸版石头剪刀布 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第 8 集中出现了一种石头剪刀布的升级版游戏。 升级版游戏在传统的石头剪刀布游戏的基础…

d435i 相机和imu标定

一、IMU 标定 使用 imu_utils 功能包标定 IMU,由于imu_utils功能包的编译依赖于code_utils,需要先编译code_utils,主要参考 相机与IMU联合标定_熊猫飞天的博客-CSDN博客 Ubuntu20.04编译并运行imu_utils,并且标定IMU_学无止境的…

函数栈帧(详解)

一、前言: 环境:X86Vs2013 我们C语言学习过程中是否遇到过如下问题或者疑惑: 1、局部变量是如何创建的? 2、为什么局部变量的值是随机值? 3、函数是怎么传参的?传参的顺序是怎样的? 4、形…

【群智能算法改进】一种改进的鹈鹕优化算法 IPOA算法[1]【Matlab代码#57】

文章目录 【获取资源请见文章第5节:资源获取】1. 原始POA算法2. 改进后的IPOA算法2.1 Sine映射种群初始化2.2 融合改进的正余弦策略2.3 Levy飞行策略 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节:资源获取】 1. 原始POA算法 此…

多线程应用——线程池

线程池 文章目录 线程池1.什么是线程池2.为什么要用线程池3.怎么使用线程池4.工厂模式5.自己实现一个线程池6.创建系统自带的线程池6.1 拒绝策略6.2 线程池的工作流程 1.什么是线程池 字面意思,一次创建多个线程,放在一个池子(集合类),用的时…

如何将枯燥的大数据进行可视化处理?

在数字时代,大数据已经成为商业、科学、政府和日常生活中不可或缺的一部分。然而,大数据本身往往是枯燥的、难以理解的数字和文字,如果没有有效的方式将其可视化,就会错失其中的宝贵信息。以下是一些方法,可以将枯燥的…

BRAM/URAM资源介绍

BRAM/URAM资源简介 Bram和URAM都是FPGA(现场可编程门阵列)中的RAM资源。 Bram是Block RAM的缩写,是Xilinx FPGA中常见的RAM资源之一,也是最常用的资源之一。它是一种单独的RAM模块,通常用于存储大量的数据&#xff0…

xctf攻防世界 MISC之CatFlag

0x01.进入环境,下载附件 拿到的是一个无后缀的flag文件,用winhex打开后发现是奇奇怪怪的乱码,用kali的strings搜索也没找到flag情况。 0x02.问题分析 题目提示如图: 让直接cat就行,在kali中直接尝试输入&#xff1a…

springWeb

springweb就是spring框架中的一个模块,对web层进行了封装,使用起来更加方便。如何方便?参数接收框架进行封装 SpringWeb拥有控制器,接收外部请求,解析参数传给服务层。 SpringWeb运行流程 用户发起请求 ip:端口/项目名…

仿射密码 affine

参考链接:https://www.cnblogs.com/0yst3r-2046/p/12172757.html 仿射加密法 在仿射加密法中,字母表的字母被赋予一个数字,例如 a0,b1,c2…z25 。仿射加密法的密钥为0-25直接的数字对。 仿射加密法与单码加密法没什么…