LVGL笔记1 Screen

什么是 Screen?

在 LVGL 中,任何通过 lv_obj_create(NULL) 创建的控件都被视为一个 Screen。它是 Widget 树的根节点,通常使用 Base Widget 创建,但也可以用 Image Widget 来实现壁纸效果。

lv_obj_t * scr1 = lv_obj_create(NULL);

创建的 Screen 默认绑定到当前显示器,并自动匹配其分辨率。需要注意的是,不能对 Screen 使用 lv_obj_set_pos()lv_obj_set_size()进行位置和尺寸设置。

什么是 Active Screen

每个显示器(lv_display)可以拥有多个 Screens,但同一时刻只有一个是“Active Screen”,即当前显示的界面。LVGL 会在创建显示器时自动生成一个默认的 Active Screen。

获取当前 Active Screen:lv_screen_active()

设置新的 Active Screen:lv_screen_load() lv_screen_load_anim()

如何切换 Screen?

切换界面时,可以选择是否使用动画效果:

lv_screen_load(scr1); // 直接切换
或者使用动画方式
lv_screen_load_anim(scr1, LV_SCREEN_LOAD_ANIM_FADE_IN, 500, 0, true);

动画类型包括:

无动画:LV_SCREEN_LOAD_ANIM_NONE

新界面覆盖旧界面:LV_SCREEN_LOAD_ANIM_OVER_LEFT 等

旧界面滑出:LV_SCREEN_LOAD_ANIM_OUT_RIGHT 等

双界面同时移动:LV_SCREEN_LOAD_ANIM_MOVE_TOP 等

淡入淡出:LV_SCREEN_LOAD_ANIM_FADE_IN / FADE_OUT

动画期间,所有输入事件(如触摸、按键)都会被禁用,确保切换过程流畅。

/**
 * @brief 屏幕加载动画类型(LVGL 屏幕切换时的过渡效果)
 */
typedef enum {
    LV_SCR_LOAD_ANIM_NONE,           /**< 无动画,直接切换到新屏幕 */

    LV_SCR_LOAD_ANIM_OVER_LEFT,      /**< 新屏幕从左侧覆盖到旧屏幕上 */
    LV_SCR_LOAD_ANIM_OVER_RIGHT,     /**< 新屏幕从右侧覆盖到旧屏幕上 */
    LV_SCR_LOAD_ANIM_OVER_TOP,       /**< 新屏幕从顶部覆盖到旧屏幕上 */
    LV_SCR_LOAD_ANIM_OVER_BOTTOM,    /**< 新屏幕从底部覆盖到旧屏幕上 */

    LV_SCR_LOAD_ANIM_MOVE_LEFT,      /**< 新屏幕从右往左移动,旧屏幕同时左移退出 */
    LV_SCR_LOAD_ANIM_MOVE_RIGHT,     /**< 新屏幕从左往右移动,旧屏幕同时右移退出 */
    LV_SCR_LOAD_ANIM_MOVE_TOP,       /**< 新屏幕从下往上移动,旧屏幕同时上移退出 */
    LV_SCR_LOAD_ANIM_MOVE_BOTTOM,    /**< 新屏幕从上往下移动,旧屏幕同时下移退出 */

    LV_SCR_LOAD_ANIM_FADE_IN,        /**< 新屏幕从透明逐渐淡入 */
    LV_SCR_LOAD_ANIM_FADE_ON = LV_SCR_LOAD_ANIM_FADE_IN, /**< 向后兼容,等价于 FADE_IN */

    LV_SCR_LOAD_ANIM_FADE_OUT,       /**< 旧屏幕逐渐淡出,再显示新屏幕 */

    LV_SCR_LOAD_ANIM_OUT_LEFT,       /**< 旧屏幕向左滑出,新屏幕立即出现 */
    LV_SCR_LOAD_ANIM_OUT_RIGHT,      /**< 旧屏幕向右滑出,新屏幕立即出现 */
    LV_SCR_LOAD_ANIM_OUT_TOP,        /**< 旧屏幕向上滑出,新屏幕立即出现 */
    LV_SCR_LOAD_ANIM_OUT_BOTTOM,     /**< 旧屏幕向下滑出,新屏幕立即出现 */
} lv_screen_load_anim_t;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除 Screen 的注意事项

虽然可以使用 lv_obj_delete(scr) 删除 Screen,但千万不要删除当前的 Active Screen,否则可能导致显示异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值