目录
前面的例子中,一个矩形创建都是用到obj的函数,obj即是指对象。LVGL的基本要素是对象,实现了屏幕上组件的基本属性,包括大小、坐标、父对象等属性。
1. 创建对象
lv_obj_t * lv_obj_create(lv_obj_t * parent);
参数:
parent - 父对象指针,如果是NULL,则表示创建一个screen。
返回:
创建的新对象指针。
2. 设置大小
void lv_obj_set_width(lv_obj_t * obj, lv_coord_t w);
void lv_obj_set_height(lv_obj_t * obj, lv_coord_t h);
void lv_obj_set_size(lv_obj_t * obj, lv_coord_t w, lv_coord_t h);
参数:
obj - 对象指针
w - 设置的宽度
h - 设置的高度
其中w/h可以是
像素(数字)。
百分比(LV_PCT(x))是以对象或其父对象的大小的百分比,LV_PCT会把数字转化为百分比。
自动(LV_SIZE_CONTENT)是根据内容自动调整大小。
3. 设置位置
void lv_obj_set_x(struct _lv_obj_t * obj, lv_coord_t x);
void lv_obj_set_y(struct _lv_obj_t * obj, lv_coord_t y);
void lv_obj_set_pos(struct _lv_obj_t * obj, lv_coord_t x, lv_coord_t y);
参数:
obj - 对象指针
x - 设置的x坐标
y - 设置的y坐标
其中x, y的坐标值含义和对齐方式alignment有关,并且都是相对父对象,对齐方式默认是左顶点的方式。坐标值可以是像素也是可以是百分比。
4. 设置对齐方式
void lv_obj_set_align(struct _lv_obj_t * obj, lv_align_t align);
void lv_obj_align(struct _lv_obj_t * obj, lv_align_t align, lv_coord_t x_ofs, lv_coord_t
y_ofs);
void lv_obj_align_to(struct _lv_obj_t * obj, const struct _lv_obj_t * base, lv_align_t
align, lv_coord_t x_ofs, lv_coord_t y_ofs);
参数:
obj - 对象指针
align - 对齐方式
enum {
LV_ALIGN_DEFAULT = 0,
LV_ALIGN_TOP_LEFT,
LV_ALIGN_TOP_MID,
LV_ALIGN_TOP_RIGHT,
LV_ALIGN_BOTTOM_LEFT,
LV_ALIGN_BOTTOM_MID,
LV_ALIGN_BOTTOM_RIGHT,
LV_ALIGN_LEFT_MID,
LV_ALIGN_RIGHT_MID,
LV_ALIGN_CENTER,
LV_ALIGN_OUT_TOP_LEFT,
LV_ALIGN_OUT_TOP_MID,
LV_ALIGN_OUT_TOP_RIGHT,
LV_ALIGN_OUT_BOTTOM_LEFT,
LV_ALIGN_OUT_BOTTOM_MID,
LV_ALIGN_OUT_BOTTOM_RIGHT,
LV_ALIGN_OUT_LEFT_TOP,
LV_ALIGN_OUT_LEFT_MID,
LV_ALIGN_OUT_LEFT_BOTTOM,
LV_ALIGN_OUT_RIGHT_TOP,
LV_ALIGN_OUT_RIGHT_MID,
LV_ALIGN_OUT_RIGHT_BOTTOM,
};
typedef uint8_t lv_align_t;
x_ofs: 对齐方式设置后x坐标的偏移
y_ofs: 对齐方式设置后y坐标的偏移
base: 新的对象指针,即obj相对新的对象指针对齐。
5. 对象的父子关系
当对象在创建时需要指定父对象,子对象的大小、位置等属性会随父对象改变,这样修改界面会很简单。
更改对象的父对象
void lv_obj_set_parent(struct _lv_obj_t * obj, struct _lv_obj_t * parent);
要获取对象的父对象
struct _lv_obj_t * lv_obj_get_parent(const struct _lv_obj_t * obj);
注意,返回NULL是表示是一个Screen。
6. 其他
其他到API函数暂时跳过,使用时再研究。
对象被创建时默认就是一个矩形对象。