【技术】LVGL中用户界面的基本构建块之对象

2022-04-09 华芯微特
华芯微特 华芯微特 华芯微特 华芯微特

在LVGL中,用户界面的基本构建块是对象,也称为小部件(widget)。本文华芯微特主要是介绍LVGL的对象模块。


LVGL基础知识之对象

对象(Objects)

在LVGL中,用户界面的基本构建块是对象,也称为小部件(widget)。例如,按钮,标签,图像,列表,图表或文本区域。查看 LVGL所有的对象类型(widget) 。


对象的属性(Attributes)

对象的基本属性

●所有对象类型都共享一些基本属性:

●Position (位置)

●Size (尺寸)

●Parent (父母)

●Drag enable (拖动启用)

●Click enable (单击启用)

●position (位置)

●等等


在此可以使用 lv_obj_set _... 和 lv_obj_get _... 等前缀的函数设置或者获取这些属性。例如:   

 /* 设置基础对象的属性 */

    lv_obj_set_size(btn1, 100, 50);   /* 设置按键的大小 */

    lv_obj_set_pos(btn1, 20,30);      /* 设置按键的位置 */


对象的特殊属性

有些对象类型也具有特殊的属性。例如,滑块具有

●Min. max. values (最小最大值)

●Current value (当前值)

●Custom styles (自定义样式)

对于这些属性,每种对象类型都有唯一的API函数。例如一个滑块的API调用过程:

    /* 设置滑块的特殊属性 */

    lv_slider_set_range(slider1, 0, 100);            /*   设置滑块的最小值和最大值 */

    lv_slider_set_value(slider1, 40, LV_ANIM_ON);   /* 设置当前值(屏幕坐标系位置) */

    lv_slider_set_action(slider1,   my_action);       /* 设置回调函数 */  

要查看 API 的实现代码,可以检查相应的头文件(例如滑块对象的头文件 lv_objx/lv_slider.h)


对象的工作机制

亲子结构

父对象可以作为其子对象的容器。每个对象只能一个父对象(屏幕除外),但是一个父对象可以有无限多个子对象。父对象的类型没有限制,但是有特殊的父对象(例如,按钮)和特殊的子对象(例如,标签)。

追随原则

如果更改了父对象的位置,则子对象将与父对象一起移动,并且子对象的位置都保持相对于父对象位置不变。例如,坐标 (0,0) 表示子对象将独立于父对象的位置保留在父对象的左上角,代码:

一个父子对象

lv_obj_t   * par =   lv_obj_create(lv_scr_act(), NULL); /* 在当前屏幕中创建一个对象 */

lv_obj_set_size(par,   100, 80);                        /* 设置对象的大小 */

 

lv_obj_t   * obj1 =   lv_obj_create(par, NULL);     /* 基于前面创建的对象(par)创建一个子对象(obj1),之前的对像成为父对象 */

lv_obj_set_pos(obj1,   10, 10);                         /* 设置子对象的位置 */

   

当修改父对象的位置,子对象也会一起移动,以保持和父对象的相对位置不变:


子对象跟随父对象

lv_obj_set_pos(par,   50, 50);  /* 移动父对象,子对象也会跟着移动,以保持相对位置不变 */

   

子对象仅在父对象的范围内可见

如果子对象的部分或全部不在其父级之内,则超出父对象的部分将不可见。子对象超出父对象的部分不可见

  lv_obj_set_x(obj1, -30);          /* 将子对象移出一部分到从父对象的范围内之外 */


创建-删除对象

在LVGL中,可以在运行时动态地创建和删除对象。这意味着仅当前创建的对象需要消耗RAM。例如,如果需要图表,可以在需要时创建它,并在不可见或不需要时将其删除。

每个对象类型都有各自的创建函数。它需要两个参数:

●指向父对象的指针。创建屏幕时以NULL作为父级。

●用于复制具有相同类型的对象的指针(可选)。如果不行进行复制操作为NULL。


使用 lv_obj_t 指针作为句柄在 C 代码中引用所有对象。以后可以使用该指针设置或获取对象的属性。

创建函数如下所示:

    lv_obj_t *   lv_ <type>_create(lv_obj_t   * parent, lv_obj_t * copy);

   

所有对象类型都有一个通用的删除功能。它删除对象及其所有子对象。

    void lv_obj_del(lv_obj_t *   obj);

   

lv_obj_del 将立即删除该对象。如果出于某种原因不能立即删除该对象,则可以使用 lv_obj_del_async(obj) ,例如,如果要删除子对象的 LV_EVENT_DELETE 信号中对象的父对象,这很有用。可以使用 lv_obj_clean 删除对象的所有子对象(但不会删除对象本身): 

    void lv_obj_clean(lv_obj_t *   obj);


屏幕对象

创建屏幕对象

屏幕是没有父对象的特殊对象。应该像这样创建它们:

    lv_obj_t *   scr1 = lv_obj_create(NULL, NULL);

可以使用任何对象类型创建屏幕。例如:创建墙纸的基础对象或图像。


获取活动屏幕

这始终是每个显示屏上的活动屏幕。默认情况下,该库为每个显示创建并加载 “基础对象” 作为屏幕。

要获取当前活动的屏幕使用函数 lv_scr_act()


载入屏幕

调用函数 lv_scr_load(scr1) 加载屏幕。


加载屏幕动画

可以调用函数:lv_scr_load_anim(scr, transition_type, time, delay, auto_del) 加载屏幕动画。参数 transition_type 是动画过渡类型,该参数可设为:

  • LV_SCR_LOAD_ANIM_NONE 延迟x毫秒后立即切换

  • LV_SCR_LOAD_ANIM_OVER_LEFT/RIGHT/TOP/BOTTOM 将新屏幕移到给定方向上

  • LV_SCR_LOAD_ANIM_MOVE_LEFT/RIGHT/TOP/BOTTOM 将旧屏幕和新屏幕都移至给定方向

  • LV_SCR_LOAD_ANIM_FADE_ON 使新屏幕淡出旧屏幕


将 auto_del 设置为 true 会在动画结束时自动删除旧屏幕。在延迟时间之后开始动画播放时,新屏幕将变为活动状态(由 lv_scr_act() 返回)。


处理多个显示

屏幕在当前选择的默认屏幕上创建。默认显示设备使用 lv_disp_drv_register 注册的最后一个屏幕作为显示,或者可以使用 lv_disp_set_default(disp) 显式选择新的默认显示屏幕。lv_scr_act() , lv_scr_load() 和 lv_scr_load_anim() 将会在默认的屏幕上操作。


零件-Parts

widget 可以包含多个 Parts 。例如,按钮仅具有主要部分,而滑块则由背景,指示器和旋钮组成。

Parts 名称的构造类似于 LV_ + <TYPE> _PART_ <NAME> 。比如 LV_BTN_PART_MAIN 、 LV_SLIDER_PART_KNOB 。通常在将样式添加到对象时使用 Parts。使用 Parts 可以将不同的样式分配给对象的不同Parts 。


状态-States

对象可以处于以下状态的组合:

●LV_STATE_DEFAULT 默认或正常状态

●LV_STATE_CHECKED 选中或点击

●LV_STATE_FOCUSED 通过键盘或编码器聚焦或通过触摸板/鼠标单击

●LV_STATE_EDITED 由编码器编辑

●LV_STATE_HOVERED 鼠标悬停(现在还不支持)

●LV_STATE_PRESSED 按下

●LV_STATE_DISABLED 禁用或无效

当用户按下,释放,聚焦等对象时,状态通常由库自动检测更改。当然状态也可以手动检测更改。要完全覆盖当前状态,调用 lv_obj_set_state(obj, part, LV_STATE...) 要设置或清除某个状态(但不更改其他状态),调用 lv_obj_add/clear_state(obj, part, LV_STATE_...) 可以组合使用状态值。例如: lv_obj_set_state(obj, part, LV_STATE_PRESSED | LV_PRESSED_CHECKED) .


以上就是关于在LVGL中,用户界面的基本构建块之对象的介绍。 


授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由海底沉心转载自华芯微特,原文标题为:LVGL基础知识(一),本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

【技术】LVGL按钮的讲解

LVGL按钮是简单的矩形对象。它们源自容器,因此也可以提供布局和配合。此外,可以启用它以在单击时自动进入检查状态。本文华芯微特将对LVGL按钮进行详细的讲解。

2022-04-23 -  技术探讨 代理服务 技术支持 现货查询 批量订货

【技术】在LVGL中用户界面的基本构建块之对象层级和事件的介绍

本文华芯微特将分享LVGL基础知识,创建对象层级顺序,事件(Events)使用方法,介绍了事件类型,详细说明了用户界面的基本构建块和对象层级和事件的介绍。

2022-04-21 -  技术探讨 代理服务 技术支持 现货查询 批量订货

【技术】LVGL进度条讲解:零件和样式及其用法

LVGL进度条对象上有一个背景和一个指示器。指示器的宽度根据进度条的当前值进行设置。如果对象的宽度小于其高度,则可以创建垂直进度条。不仅可以设置进度条的结束值,还可以设置进度条的起始值,从而改变指示器的起始位置。本文华芯微特将从零件和样式、用法两个方面来讲LVGL进度条。

2022-04-22 -  技术探讨 代理服务 技术支持 现货查询 批量订货

【经验】如何使用JFLASH擦除、写入及读取华芯微特指定型号MCU

本文介绍了华芯微特MCU产品如何使用第三方Segger公司的JFLASH配合J-Link仿真器对指定型号MCU的Flash进行擦除、写入及读取操作。

2022-12-22 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】华芯微特SWM341/SWM34S系列MCU环境配置指南

华芯微特MCU的系列之SWM341&SWM34S,内核相同,34S在341基础上内置了SDRAM。341芯片使用M33内核,基于ARM-V8指令集的架构,对应的工具版本有更高的要求。本文中华芯微特将为大家介绍SWM341/SWM34S系列MCU环境配置指南。

2023-09-26 -  设计经验 代理服务 技术支持 现货查询 批量订货

华芯微特(Synwit)32位MCU选型表

目录- 32位微控制器   

型号- SWM19SC9T6-50,SWM241PBT7-80,SWM260PBT7-80,SWM181RCT6-50,SWM211,SWM21DC8U7-50,SWM211G6S7-65,SWM181C9T6-50,SWM241KBT7-80,SWM34SRET6-50,SWM21PG6S7-65,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM201G6S7-65,SWM181DBU6-40,SWM211C8T7-50,SWM201C6T7-50,SWM341CET7-50,SWM190CBT7-50,SWM201,SWM320VET7-50,SWM320,SWM20PG6S6-65,SWM341,SWM241,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM32SRET6-50,SWM190RBT7-50,SWM241CBT7-50,SWM181CBT6-50,SWM20DC6U7-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50

2022/8/30  - 华芯微特  - 选型指南 代理服务 技术支持 现货查询 批量订货

华芯微特MCU 32 位微控制器产品列表

型号- SWM19SC9T6-50,SWM241PBT7-80,SWM181RCT6-50,SWM211,SWM211G6S7-65,SWM181C9T6-50,SWM22PE8S7-63,SWM241KBT7-80,SWM221EBS7-63,SWM34SRET6-50,SWM21PG6S7-65,SWM221CBT7-50,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM181DBU6-40,SWM211C8T7-50,SWM21PE6S7-63,SWM341CET7-50,SWM190CBT7-50,SWM166,SWM221,SWM320,SWM341,SWM241,SWM221KBU7-50,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM166D8U6-40,SWM32SRET6-50,SWM21DD8U7-40,SWM34SMEU6-40,SWM190RBT7-50,SWM181CBT6-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50

2024-11  - 华芯微特  - 快速参考指南 代理服务 技术支持 现货查询 批量订货

【应用】华芯微特高速吹风筒电机控制解决方案,主频可达90MHz,具有堵转、过流、过压、过温保护等功能

随着生活品质的提高,人们对吹风机的要求不只是将头发吹干,与此同时还要求不伤发、能养发的功能需求,华芯微特目前推出了2款高速吹风筒电机控制解决方案(即SWM211C8T7-50,SWM211G6S7-65),具有堵转、过流、过压、过温保护等功能。

2023-05-30 -  应用方案 代理服务 技术支持 现货查询 批量订货

SWM341单片机运行Rust教程,一切从点灯开始

Swm341是一款非常优秀的国产单片机芯片,聚焦于显示控制,有着非常多的硬件资源可供使用,开发非常方便。另外Rust目前开始变得流行,执行效率也非常高,因此想在Swm341中尝试使用运行Rust开发,本文进行介绍。

2024-04-11 -  原厂动态 代理服务 技术支持 现货查询 批量订货

华芯微特SWM341 ISP模式参考

本文介绍华芯微特SWM341MCU ISP模式。

2024-11-11 -  设计经验 代理服务 技术支持 现货查询 批量订货

华芯微特(Synwit)32位MCU选型指南

目录- 公司介绍&产品分类    TFT-LCD 显示和人机界面(HMI)用微控制器    电机专用微控制器    大家电 & 工控通用微控制器    32位微控制器选型表   

型号- SWM34X,SWM320 SERIES,SWM 201C6T7-50,SWM19SCBT6-50,SWM190 SERIES,SWM 201 系列,SWM32SRET6,SWM181CCT6-50,SWM260KBT7-80,SWM190KBT6-80,SWM201G6S7-65,SWM 201,SWM 201G6S7-65,SWM 19S 系列,SWM201,SWM260 SERIES,SWM320,SWM19S,SWM160,SWM20PG6S6,SWM20D,SWM32SRET6-50,SWM 20PG6S6-65,SWM 190,SWM181CBT6-50,SWM260CBT7-50,SWM260PBT7-80,SWM 260 系列,SWM32S,SWM181 SERIES,SWM181RCT6-50,SWM20P,SWM260CBT7,SWM160C8T7-50,SWM190CBT6-50,SWM20G,SWM 190 系列,SWM 260,SWM 181,SWM201 SERIES,SWM320RET7-50,SWM181DBU6-40,SWM181CBT6,SWM160 SERIES,SWM 341,SWM 341 系列,SWM190 系列,SWM201C6T7-50,SWM 181 系列,SWM320VET7-50,SWM341,SWM190RBT6-50,SWM20PG6S6-65,SWM260,SWM181,SWM320CET7-50,SWM190

2021/3/15  - 华芯微特  - 选型指南 代理服务 技术支持 现货查询 批量订货

使用华芯微特SWM341系列MCU环境配置

SWM341是华芯微特的其中一款MCU,341和341+内置SDRAM的34S系列,其内核相同。本文中华芯微特来为大家介绍使用SWM341系列MCU环境配置,希望对各位工程师朋友有所帮助。

2024-10-27 -  设计经验 代理服务 技术支持 现货查询 批量订货

华芯微特主控芯片SWM34S系列助力智能阀门控制器屏驱显示,适用于10.1寸及以下TFT屏

阀门控制器是一种用于控制阀门开闭状态的设备。它可以通过接收信号,控制阀门的开度,从而实现对流体的控制和调节。智能阀门控制器带有一个显示屏,用以设置和显示阀门调节的各类参数。该显示屏从传统的断码屏,逐步升级为TFT彩屏。本文推荐华芯微特主控芯片SWM34S。

2024-07-10 -  应用方案 代理服务 技术支持 现货查询 批量订货
展开更多

电子商城

查看更多

品牌:华芯微特

品类:MCU

价格:¥22.0900

现货: 3,757

品牌:华芯微特

品类:MCU

价格:¥8.9600

现货: 2,730

品牌:华芯微特

品类:32-bit MCU

价格:¥5.4400

现货: 2,040

品牌:华芯微特

品类:MCU

价格:¥3.6800

现货: 2,000

品牌:华芯微特

品类:32bit MCU

价格:¥17.2900

现货: 1,355

品牌:华芯微特

品类:MCU

价格:¥11.5200

现货: 1,240

品牌:华芯微特

品类:开发板

价格:¥225.0000

现货: 1,000

品牌:华芯微特

品类:开发板

价格:¥225.0000

现货: 1,000

品牌:华芯微特

品类:MCU

价格:¥22.0800

现货: 900

品牌:华芯微特

品类:32-bit MCU

价格:¥7.6800

现货: 30

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

暂无此商品

海量正品紧缺物料,超低价格,限量库存搜索料号

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面