LVGL8的窗口切换方式
LVGL8实现两个窗口的切换方式:
方法一:切换到窗口2时,删除窗口1的容器,这样可以删除窗口1下的所有子对象,这种方式适用于运存较小的设备
方法二:显示窗口1之前给窗口2的容器设置LV_OBJ_FLAG_HIDDEN隐藏属性,显示窗口2之前给窗口1的容器设置LV_OBJ_FLAG_HIDDEN隐藏属性
还是通过codeblock来模拟代码的运行,代码如下:
#define HIDDEN_WIN (0)
static lv_obj_t *win1_contanier = NULL;
static lv_obj_t *win2_contanier = NULL;static void win_btn_event_callback1(lv_event_t* event);
static void win_btn_event_callback2(lv_event_t* event);static void show_button_win1()
{static lv_style_t obj_style;lv_style_reset(&obj_style);lv_style_init(&obj_style); // 初始化按钮样式lv_style_set_radius(&obj_style, 0); // 设置样式圆角弧度lv_obj_t * btn =NULL;win1_contanier = lv_obj_create(lv_scr_act()); // 基于屏幕创建一个和屏幕大小一样的容器win1_contanierif (win1_contanier != NULL){lv_obj_set_style_bg_color(win1_contanier, lv_palette_main(LV_PALETTE_RED), 0);lv_obj_set_size(win1_contanier, 800, 480);lv_obj_add_style(win1_contanier, &obj_style, 0);btn = lv_btn_create(win1_contanier);if (btn != NULL){lv_obj_set_size(btn, 100, 50);lv_obj_add_event_cb(btn, win_btn_event_callback1, LV_EVENT_ALL, NULL); // 给对象添加CLICK事件和事件处理回调函数lv_obj_center(btn);lv_obj_t *label = lv_label_create(btn); // 给按钮添加标签if (label != NULL){lv_label_set_text(label, "Button1"); // 设置标签文本lv_obj_center(label); // 标签居中显示}}}
}static void show_button_win2()
{static lv_style_t obj_style;lv_style_reset(&obj_style);lv_style_init(&obj_style); // 初始化按钮样式lv_style_set_radius(&obj_style, 0); // 设置样式圆角弧度lv_obj_t * btn =NULL;win2_contanier = lv_obj_create(lv_scr_act()); // 基于屏幕创建一个和屏幕大小一样的容器win2_contanierif (win2_contanier != NULL){lv_obj_set_style_bg_color(win2_contanier, lv_palette_main(LV_PALETTE_BLUE), 0);lv_obj_set_size(win2_contanier, 800, 480);lv_obj_add_style(win2_contanier, &obj_style, 0);btn = lv_btn_create(win2_contanier);if (btn != NULL){lv_obj_set_size(btn, 100, 50);lv_obj_add_event_cb(btn, win_btn_event_callback2, LV_EVENT_ALL, NULL); // 给对象添加CLICK事件和事件处理回调函数lv_obj_center(btn);lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_RED), 0);lv_obj_t *label = lv_label_create(btn); // 给按钮添加标签if (label != NULL){lv_label_set_text(label, "Button2"); // 设置标签文本lv_obj_center(label); // 标签居中显示}}}
}static void win_btn_event_callback1(lv_event_t* event)
{lv_event_code_t code = lv_event_get_code(event);if (code == LV_EVENT_CLICKED){
#if HIDDEN_WIN// 给窗口1的容器添加隐藏属性,清除窗口2的隐藏属性lv_obj_add_flag(win1_contanier, LV_OBJ_FLAG_HIDDEN);lv_obj_clear_flag(win2_contanier, LV_OBJ_FLAG_HIDDEN);
#else// 删除窗口1的win1_contanier容器,这样就可以把win1_contanier上的子对象全部删除,然后显示窗口2lv_obj_del(win1_contanier);show_button_win2();
#endif}
}static void win_btn_event_callback2(lv_event_t* event)
{lv_event_code_t code = lv_event_get_code(event);if (code == LV_EVENT_CLICKED){
#if HIDDEN_WIN// 给窗口2的容器添加隐藏属性,清除窗口1的隐藏属性lv_obj_add_flag(win2_contanier, LV_OBJ_FLAG_HIDDEN);lv_obj_clear_flag(win1_contanier, LV_OBJ_FLAG_HIDDEN);
#else// 删除窗口2的win2_contanier容器,这样就可以把win2_contanier上的子对象全部删除,然后显示窗口1lv_obj_del(win2_contanier);show_button_win1();
#endif}
}void lv_win_switch_main()
{show_button_win1();
#if HIDDEN_WINshow_button_win2();// 给窗口2的容器添加隐藏属性lv_obj_add_flag(win2_contanier, LV_OBJ_FLAG_HIDDEN);
#endif
}
运行效果:
LVGL8的窗口切换方式相关推荐
- win10 快速窗口切换方式
win10 快速窗口切换方式: 同时按住Alt键和Tab键 这样同时显示以后 Alt 键不要从 点击Tab 键切换窗口就行啦加粗样式****
- emWin 2天速成实例教程002_多个页面窗口切换
备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考. ...
- Python+Selenium学习笔记8 - 多表单多窗口切换
1.多表单切换 下图为待测页面:内嵌百度首页 切换到百度首页进行操作 1 #coding = utf-8 2 3 from selenium importwebdriver4 importos5 im ...
- 计算机快速切换任务,电脑多任务窗口切换:除了Alt+Tab,你还知道什么?
平时我们用到电脑时,多半情况是需要同时打开多个窗口的.比如微信.浏览器.办公三件套等等.工作或是学习的时候,难免会在各个窗口以及浏览器不同页面之间来回切换,所以关于切换的方式你都了解了吗? 浏览器页面 ...
- Win+Tab键实现自定义程序列表间的窗口切换
程序是用AutoHotkey语言写的, 说明: 以自己使用频率的顺序在ExeList自定义的程序间切换 切换可以以所有窗口切换,也可以按程序组切换(比如在word窗口间切换) 程序组可以分别定义排除的 ...
- web页面:窗口切换
1.标签页切换 在某个窗口上点击某个链接在新标签页显示新窗口时,如果想要点击新标签页的元素时,需要进行窗口切换. driver.switch_to.window('窗口名称') from seleni ...
- 【Unity笔记】连招动画切换方式(一)
连招动画切换方式(一) 此方法可以实现的连击效果: 通过连续点击鼠标左键 攻击1 接 攻击2 接 攻击3 结束 在任意攻击动作中停止点击鼠标左键,则连击中断 一.Animator中的设置 先将一套连招 ...
- 修改Windows 8中文输入法切换方式
原文地址为: 修改Windows 8中文输入法切换方式 Windows8中默认的只有一个微软拼音输入法,本身这个输入法还算好用,但切换的方式种种不习惯.尤其是我还同时用着Win7的系统,两头切换着实很 ...
- 自动化测试——多窗口切换和切换frame
这里写目录标题 一.多窗口切换 1.base.py:公共代码 2.切换句柄的方式1,通过for循环 3.切换句柄的方式2,通过索引切换 4.源代码 二.frame窗口 1.什么是frame? 2.Fr ...
最新文章
- HTML5延迟加载原理
- 深入浅出 5种IO模型。
- k8s多节点仪表盘(web界面)部署与谷歌浏览器访问k8s仪表盘问题解决!
- 强化学习之基础入门_强化学习基础
- svg mysql_SVG 实例
- 使用faketime修改docker内的时间,解决date: cannot set date: Operation not permitted问题
- python安装完毕后,用pip安装,提示找不到ssl模块
- Maven常见警告解决办法
- eclipse项目如何变成web项目_IntelliJ IDEA 部署 Web 项目,终于搞懂了!
- 2021上半年ICPC各类赛事时间日程
- WinRunner在项目中的作用
- 遇到This application failed to start becauseit could not find...的问题
- f1c100A运行linux,荔枝派 Nano 全志 F1C100s 编译运行 Linux 笔记
- Python Twisted 简介
- Image data cannot be converted to float
- ESLint和Prettier的配置
- 2021蓝桥杯预选赛题解
- 神舟十二号出征星辰大海--麒麟信安操作系统筑牢“千年飞天梦”软件基石
- CentOS6 安装gcc编译器,解决【configure: error: no acceptable C compiler found in $PATH】问题
- 『PyTorch』学习笔记 2 —— 模型 Finetune