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(一起移动)
![]() | 如果父节点的位置发生变化,子节点将于父节点一起移动。位置是相对于父节点定位。 |
---|
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*/
![]() | 修改父级位置 |
---|
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
:在delay
ms 后立即切换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(快照)
待处理