基础对象实现了屏幕上小部件的基本属性,例如:
在面向对象的思想中,它是继承 LVGL 中所有其他对象的基类。这尤其有助于减少代码重复。
基础对象的功能也可以与其他小部件一起使用。例如 lv_obj_set_width(slider,100)
基础对象可以直接用作简单的小部件。然后就是矩形。
lv_obj_t * obj1 = lv_obj_create(lv_scr_act(), NULL);
可以使用 lv_obj_set_width(obj,new_width)
和 lv_obj_set_height(obj,new_height)
在单个坐标轴方向(横向、纵向)上修改对象的大小,或者可以使用 lv_obj_set_size(obj,new_width,new_height)
同时修改两个坐标轴方向(横向及纵向)的大小。
lv_obj_set_size(obj1, 200,150);
可以使用 lv_obj_set_x(obj,new_x)
和 lv_obj_set_y(obj,new_y)
设置对象相对于父级的x和y坐标,或者同时使用lv_obj_set_pos(obj,new_x,new_y)
设置相对于父级的x和y坐标。
lv_obj_set_pos(btn1, 10, 10);
可以使用 lv_obj_align(obj, obj_ref, LV_ALIGN_..., x_ofs, y_ofs
) 将对象与另一个对象对齐。
obj
– 是要对齐的对象。obj_ref
– 是参考对象。obj
将与其对齐。如果 obj_ref = NULL
,则将使用 obj
的父级。lv_obj_align(obj1, NULL, LV_ALIGN_CENTER, -50, -30); // 对齐到父对象的中心,偏移-50,-30
lv_obj_align(text1, btn1, LV_ALIGN_OUT_BOTTOM_MID,0 ,0); // 对齐到btn1的外面下面中间
lv_obj_align_origo
的操作目标是中心点,例如:
lv_obj_align_origo(btn2, obj1, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
如果使用 lv_obj_set_auto_realign(obj, true)
,并且对象的大小在 lv_obj_set_width/height/size()
函数中更改,则对象将自动重新对齐。当将尺寸动画应用于对象并且需要保留原始位置时,这非常有用。
先来看这一行代码:
lv_obj_t * btn1 = lv_btn_create(obj1, NULL);
意思是,在obj1
上面创建一个子对象btn1
可以用lv_obj_get_parent(obj)
获取obj的父对象
用lv_obj_get_child(obj,child_prev)
从最后到第一获取子对象
用lv_obj_get_child_back(obj,child_prev)
从第一到最后获取子对象
lv_scr_act()
函数提供了指向当前屏幕的指针。
如果创建了 lv_obj_t * screen = lv_obj_create(NULL,NULL)
之类的屏幕后,可以使用 lv_scr_load(screen)
加载它。
要获取对象的屏幕,请使用 lv_obj_get_screen(obj)
函数。
有两个自动生成的层:
lv_layer_top()
就是看的见的lv_layer_sys()
例如 鼠标光标lv_scr_act()
,并且将显示在每个屏幕上。顶层位于屏幕上每个对象的上方,而系统层也位于顶层上方。可以将任何弹出窗口自由添加到顶层。但是,系统层仅限于 系统级 的内容(例如,鼠标光标将放在 lv_indev_set_cursor()
中)。lv_scr_act()
< lv_layer_top()
< lv_layer_sys()
lv_obj_move_foreground(obj)
和 lv_obj_move_background(obj)
将对象置于前景或发送至背景。要为对象设置事件回调,请使用 lv_obj_set_event_cb(obj, event_cb)
要将事件手动发送到对象,请使用 lv_event_send(obj, LV_EVENT _..., data)
对象可以处于以下状态的组合:
调用 lv_obj_set_…(obj, true/false) 可以启用/禁用一些属性: