1.1 Objects(对象)

Attributes(属性)

Basic attributes(基本属性)

所有对象共享基本属性:

  • Position
  • Size
  • Parent
  • Styles
  • Event handlers
  • Etc
    可以使用 lv_obj_set_...lv_obj_get_...函数设置/获取这些属性:
/*Set basic object attributes*/
lv_obj_set_size(btn1, 100, 50);	  /*Set a button's size*/
lv_obj_set_pos(btn1, 20,30);      /*Set a button's position*/

Specific attributes(特定属性)

对象类型也有特殊的属性:

/*Set slider specific attributes*/
lv_slider_set_range(slider1, 0, 100);	   				/*Set the min. and max. values*/
lv_slider_set_value(slider1, 40, LV_ANIM_ON);		/*Set the current value (position)*/

Working mechanisms(工作机制)

parent-child structure(父子结构)

父对象可以视为子对象的容量。
每个对象只有一个父对象,但一个父对象可以有任意数量的子对象。

Moving togerther(一起移动)

lvgl如果父节点的位置发生变化,子节点将于父节点一起移动。位置是相对于父节点定位。

code:

lv_obj_t * parent = lv_obj_create(lv_scr_act());   /*Create a parent object on the current screen*/
lv_obj_set_size(parent, 100, 80);	                 /*Set the size of the parent*/

lv_obj_t * obj1 = lv_obj_create(parent);	         /*Create an object on the previously created parent object*/
lv_obj_set_pos(obj1, 10, 10);	                     /*Set the position of the new object*/

LVGL修改父级位置

code:

lv_obj_set_pos(parent, 50, 50);	/*Move the parent. The child will move with it.*/

Visibility only on the parent(仅在父对象上可见)

在这里插入图片描述如果child超出parent设置大小,超出部分将不可见。

Create and delete object(创建和删除对象)

在 LVGL 中,可以在运行时动态创建和删除对象。这意味着只有当前创建的(现有)对象消耗 RAM。

这允许仅在单击按钮打开屏幕时创建屏幕,并在加载新屏幕时删除屏幕。

lv_obj_t * lv_<widget>_create(lv_obj_t * parent, <other paramaters if any>);

create 函数只有一个 parent 参数,在哪个对象上创建新小部件。
返回值是一个指向创建对象的指针,类型为 lv_obj_t *。
所有对象类型都有一个通用的 delete 函数。它删除对象及其所有子对象。

void lv_obj_del(lv_obj_t * obj);
  • lv_obj_del:删除对象及其所有子对象。
  • lv_obj_del_async(obj):将在下次调用lv_timer_handler()时执行删除。
  • lv_obj_clean(obj):删除所有子对象。
  • lv_obj_del_delayed(obj, 1000):延迟一段时间后删除。

Screens(屏幕)

Create screens(创建屏幕)

屏幕没有父对象;

lv_obj_t * scr1 = lv_obj_create(NULL);

Get the active screen(获取活动屏幕)

每个显示器上总有一个活动屏幕。默认情况下,库创建并加载一个基础对象作为每个显示的屏幕。

Load screens(加载屏幕)

lv_scr_load(scr1);

Layers(层)

有两个默认生成的层:

  • top layer
  • system layer
    system layer 永远位于 top layer之上

Load screen with animation(用动画加载屏幕)

新屏幕可以使用lv_scr_load_anim(scr, transition_type, time, delay, auto_del)加载动画:

  • LV_SCR_LOAD_ANIM_NONE:在delayms 后立即切换
  • 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 将在动画完成时自动删除旧屏幕。 当动画在 delay 时间后开始时,新屏幕将变为活动状态(由 lv_scr_act() 返回)。

Handling multiple displays (处理多个显示器)

屏幕是在初始化是默认显示上创建的。
default display是最后一个用lv_disp_drv_register注册的显示。
或者可以使用lv_disp_set_default(disp)明确的选择一个新的默认显示。
lv_scr_act()
lv_scr_load()
lv_scr_load_anim()
在默认屏幕上运行。

Parts(部分)

待处理

States(状态)

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

  • LV_STATE_DEFAULT:正常,释放状态
  • LV_STATE_CHECKED:切换或选中状态
  • LV_STATE_FOCUSED:通过键盘或者编码器聚焦或者点击
  • LV_STATE_FOCUS_KEY:通过键盘或编码器聚焦,但不通过触摸板/鼠标聚焦
  • LV_STATE_EDITED:由编码器编辑
  • LV_STATE_HOVERED鼠标悬停(现在不支持)
  • LV_STATE_PRESSED:被按下
  • LV_STATE_SCROLLED:正在滚动
  • LV_STATE_DISABLED:禁用状态
  • LV_STATE_USER_1 :自定义状态
    当用户按下、释放、聚焦对象的时候,库通常会自动更改状态。也可手动更改。

lv_obj_add/clear_state(obj, LV_STATE_...):设置或清除给定状态,保持其他状态不变。

Snapshot(快照)

待处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值