基础对象(lv_obj)¶
概述¶
基础对象 实现了屏幕上小部件的基本属性,例如:
座标
父对象
子对象
主要风格
属性,例如点击启用、拖动启用等。
在面向对象的思想中,它是继承 LVGL 中所有其他对象的基类。这尤其有助于减少代码重复。
Base 对象的功能也可以与其他小部件一起使用。例如 lv_obj_set_width(slider,100)
Base 对象可以直接用作简单的小部件。然后就是矩形。
坐标¶
尺寸¶
可以使用 lv_obj_set_width(obj,new_width)
和 lv_obj_set_height(obj,new_height)
在单个坐标轴方向(横向、纵向)上修改对象的大小,或者可以使用 lv_obj_set_size(obj,new_width,new_height)
同时修改两个坐标轴方向(横向及纵向)的大小。
样式可以向对象添加边距。 Margin(边距)说 “我想要我周围的空间” 。那么我们可以设置对象的宽度: lv_obj_set_width_margin(obj,new_width)
或高度: lv_obj_set_height_margin(obj,new_height)
。更确切地讲是这样: new_width = left_margin + object_width + right_margin
.
要获取包含边距的宽度或高度,请使用 lv_obj_get_width/height_margin(obj)
。
样式也可以向对象添加填充。填充的意思是 我不要我的孩子们离我的身体太近,所以要保留这个空间 。通过 lv_obj_set_width_fit(obj,new_width)
或 lv_obj_set_height_fit(obj,new_height)
设置需要填充减小的宽度或高度。
可以以更精确的方式: new_width = left_pad + object_width + right_pad
。 要获得通过填充减少的宽度或高度,请使用 lv_obj_get_width/height_fit(obj)
。可以将其视为 对象的有用大小 。
当其他窗口小部件使用布局或自动调整时,边距和填充变得很重要。
位置¶
可以使用 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_align(obj, obj_ref, LV_ALIGN_..., x_ofs, y_ofs)
将对象与另一个对象对齐。
obj
是要对齐的对象。obj_ref
是参考对象。obj
将与其对齐。如果obj_ref = NULL
,则将使用obj
的父级。第三个参数是对齐方式的类型。这些是可能的选项:
对齐类型的构建类似于LV_ALIGN_OUT_TOP_MID。 - 最后两个参数允许在对齐对象 后 将其移动指定数量的像素。
例如,要在图像下方对齐文本:lv_obj_align(text, image, LV_ALIGN_OUT_BOTTOM_MID, 0, 10)
。
或在父级中间对齐文本: lv_obj_align(text, NULL, LV_ALIGN_CENTER, 0, 0)
lv_obj_align_origo
的工作方式与 lv_obj_align
类似,但它使对象的中心对齐。
例如, lv_obj_align_origo(btn, image, LV_ALIGN_OUT_BOTTOM_MID, 0, 0)
将使按钮的中心与图像底部对齐。
如果在 lv_conf.h
中启用了 LV_USE_OBJ_REALIGN
,则路线的参数将保存在对象中。然后,只需调用 lv_obj_realign(obj)
即可重新对齐对象。等效于使用相同的参数再次调用 lv_obj_align
。
如果对齐是通过 lv_obj_align_origo
进行的,则在重新对齐对象时将使用它。
函数 lv_obj_align_x/y
和 lv_obj_align_origo_x/y
只能在一个轴上对齐。
如果使用 lv_obj_set_auto_realign(obj, true)
,并且对象的大小在 lv_obj_set_width/height/size()
函数中更改,则对象将自动重新对齐。当将尺寸动画应用于对象并且需要保留原始位置时,这非常有用。
(请注意,屏幕的坐标无法更改。尝试在屏幕上使用这些功能将导致不确定的行为。
父子关系¶
可以使用 lv_obj_set_parent(obj,new_parent)
为对象设置新的父对象。要获取当前的父对象,请使用 lv_obj_get_parent(obj)
。
要获取对象的子代,请使用 lv_obj_get_child(obj,child_prev)
( 从最后到第一 )或 lv_obj_get_child_back(obj,child_prev)
( 从第一到最后 )。 要获得第一个子代 ,请将 NULL
作为第二个参数传递,并使用返回值遍历子代。如果没有更多的子级,该函数将返回 NULL
。例如:
1 2 3 4 5 | lv_obj_t * child = lv_obj_get_child(parent, NULL);
while(child) {
/*Do something with "child" */
child = lv_obj_get_child(parent, child);
}
|
lv_obj_count_children(obj)
告知对象上的子代数。
lv_obj_count_children_recursive(obj)
也会告知子代数,使用递归计算子代数。
屏幕¶
创建了 lv_obj_t * screen = lv_obj_create(NULL,NULL)
之类的屏幕后,可以使用 lv_scr_load(screen)
加载它。 lv_scr_act()
函数提供了指向当前屏幕的指针。
如果有更多的显示,那么我们就要知道这些功能,可以在最后创建的或明确选择的显示上运行(使用 lv_disp_set_default
)。
要获取对象的屏幕,请使用 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_layer_top()
和 lv_layer_sys()
函数提供了指向顶层或系统层的指针。
可以使用 lv_obj_move_foreground(obj)
和 lv_obj_move_background(obj)
将对象置于前景或发送至背景。
阅读 对象层级(Layers) 部分,以了解有关图层的更多信息。
事件处理¶
要为对象设置事件回调,请使用 lv_obj_set_event_cb(obj, event_cb)
,
要将事件手动发送到对象,请使用 lv_event_send(obj, LV_EVENT _..., data)
阅读 事件概述 以了解有关事件的更多信息。
部件¶
小部件可以包含多个部分。例如,按钮仅具有主要部分,而滑块则由背景,指示器和旋钮组成。
零件名称的构造类似于 LV_ + <TYPE> _PART_ <NAME>
。例如 LV_BTN_PART_MAIN
或 LV_SLIDER_PART_KNOB
通常在将样式添加到对象时使用零件。使用零件可以将不同的样式分配给对象的不同零件。
要了解有关零件的更多信息,请阅读 样式概述 的相关部分。
状态¶
对象可以处于以下状态的组合:
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)
.
要了解有关状态的更多信息,请阅读 样式概述 的相关部分。
风格¶
确保首先阅读了解了 样式概述 部分内容。
要将样式添加到对象,请使用 lv_obj_add_style(obj, part, &new_style)
函数。基础对象使用所有类似矩形的样式属性。
要从对象中删除所有样式,请使用 lv_obj_reset_style_list(obj, part)
如果修改对象已使用的样式,为了刷新受影响的对象,可以使用每个对象在对象上使用 lv_obj_refresh_style(obj)
或使用 lv_obj_report_style_mod(&style)
通知具有给定样式的所有对象。如果 lv_obj_report_style_mod
的参数为 NULL
,则将通知所有对象。
属性¶
调用 lv_obj_set_...(obj, true/false)
可以启用/禁用一些属性:
hidden - 隐藏对象。它不会被绘制,输入设备会将其视为不存在。它的子项也将被隐藏。
click - 允许通过输入设备单击对象。如果禁用,则单击事件将传递到此事件后面的对象。 (默认情况下无法点击标签)
top - 如果启用,则单击此对象或其任何子级时,该对象将进入前台。
drag - 启用拖动(通过输入设备移动)
drag_dir - 启用仅在特定方向上拖动。可以是LV_DRAG_DIR_HOR / VER / ALL。
drag_throw - 通过拖动启用“投掷”,就像对象将具有动量一样
drag_parent - 如果启用,则对象的父对象将在拖动过程中移动。看起来就像拖动父级。递归检查,因此也可以传播给祖父母。
parent_event - 也将事件传播给父母。递归检查,因此也可以传播给祖父母。
opa_scale_enable - 启用不透明度缩放。请参见[#opa-scale](Opa比例尺)部分。
保护¶
库中有一些自动发生的特定操作。为防止一种或多种此类行为,可以保护对象免受它们侵害。存在以下保护:
LV_PROTECT_NONE 没有保护
LV_PROTECT_POS 防止自动定位(例如容器中的布局)
LV_PROTECT_FOLLOW 防止在自动排序(例如容器布局)中遵循该对象(“换行”)
LV_PROTECT_PARENT 防止自动更改父母。 (例如,页面将在背景上创建的子代移动到可滚动页面)
LV_PROTECT_PRESS_LOST 防止手指滑过对象时丢失。 (例如,如果按下某个按钮,则可以将其释放)
LV_PROTECT_CLICK_FOCUS 如果对象在“组”中并且启用了单击焦点,则阻止其自动聚焦。
LV_PROTECT_CHILD_CHG 禁用子对象更换信号。库内部使用
lv_obj_add/clear_protect(obj, LV_PROTECT_...) 设置/清除保护。也可以使用保护类型的“或”值。
组¶
一旦将对象添加到具有 lv_group_add_obj(group, obj)
的组中,则可以通过 lv_obj_get_group(obj)
获得该对象的当前组。
lv_obj_is_focused(obj)告知对象当前是否集中在其组上。如果未将对象添加到组中,则将返回false。
阅读 输入设备概述 以了解有关组的更多信息。
扩展点击区域¶
默认情况下,只能在对象的坐标上单击对象,但是可以使用 lv_obj_set_ext_click_area(obj, left, right, top, bottom)
扩展该区域。左侧(left)/右侧(right)/顶部(top)/底部(bottom) 描述了可点击区域应在每个方向上超出默认范围的程度。
前提是要在 lv_conf.h
使能 LV_USE_EXT_CLICK_AREA
启用此功能。可能的值为:
LV_EXT_CLICK_AREA_FULL 将所有 4 个坐标存储为
lv_coord_t
LV_EXT_CLICK_AREA_TINY 仅将水平和垂直坐标(使用 左/右和上/下 的较大值)存储为
uint8_t
LV_EXT_CLICK_AREA_OFF 禁用此功能
范例¶
具有自定义样式的基础对象¶
上述效果的示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include "../../../lv_examples.h"
void lv_ex_obj_1(void)
{
lv_obj_t * obj1;
obj1 = lv_obj_create(lv_scr_act(), NULL);
lv_obj_set_size(obj1, 100, 50);
lv_obj_align(obj1, NULL, LV_ALIGN_CENTER, -60, -30);
/*Copy the previous object and enable drag*/
lv_obj_t * obj2;
obj2 = lv_obj_create(lv_scr_act(), obj1);
lv_obj_align(obj2, NULL, LV_ALIGN_CENTER, 0, 0);
lv_obj_set_drag(obj2, true);
static lv_style_t style_shadow;
lv_style_init(&style_shadow);
lv_style_set_shadow_width(&style_shadow, LV_STATE_DEFAULT, 10);
lv_style_set_shadow_spread(&style_shadow, LV_STATE_DEFAULT, 5);
lv_style_set_shadow_color(&style_shadow, LV_STATE_DEFAULT, LV_COLOR_BLUE);
/*Copy the previous object (drag is already enabled)*/
lv_obj_t * obj3;
obj3 = lv_obj_create(lv_scr_act(), obj2);
lv_obj_add_style(obj3, LV_OBJ_PART_MAIN, &style_shadow);
lv_obj_align(obj3, NULL, LV_ALIGN_CENTER, 60, 30);
}
|
相关API¶
Typedefs¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Typedefs uint8_t lv_design_mode_t
Typedefs uint8_t lv_design_res_t
/* 设计回调用于在屏幕上绘制对象。它接受对象,遮罩区域以及绘制对象的方式。*/
Typedefs lv_design_res_t(* lv_design_cb_t)(struct _lv_obj_t * obj,constlv_area_t * clip_area,lv_design_mode_t mode)
/* 发送到对象的事件类型。*/
Typedefs uint8_t lv_event_t
/* 事件回调。事件用于通知用户对该对象正在执行的某些操作。有关详细信息,请参见 lv_event_t。*/
Typedefs void (* lv_event_cb_t)(struct _lv_obj_t * obj,lv_event_t event )
Typedefs uint8_t lv_signal_t
Typedefs lv_res_t(* lv_signal_cb_t)(struct _lv_obj_t * obj,lv_signal_t sign,void * param )
Typedefs uint8_t lv_protect_t
Typedefs uint8_t lv_state_t
Typedefs struct _lv_obj_tlv_obj_t
Typedefs uint8_t lv_obj_part_t
|
enums¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | enum [anonymous]
设计模式
值:
enumerator LV_DESIGN_DRAW_MAIN /* 绘制对象的主要部分 */
enumerator LV_DESIGN_DRAW_POST /* 在对象上绘画 */
enumerator LV_DESIGN_COVER_CHK /* 检查对象是否完全覆盖“ mask_p”区域 */
enum [anonymous]
设计结果
值:
enumerator LV_DESIGN_RES_OK /* 准备好 */
enumerator LV_DESIGN_RES_COVER /* LV_DESIGN_COVER_CHK 如果区域完全覆盖,则返回 */
enumerator LV_DESIGN_RES_NOT_COVER /* LV_DESIGN_COVER_CHK 如果未覆盖区域,则返回 */
enumerator LV_DESIGN_RES_MASKED /* LV_DESIGN_COVER_CHK 如果区域被遮盖,则返回(子类也不会遮盖)*/
enum [anonymous]
值:
enumerator LV_EVENT_PRESSED /* 该对象已被按下 */
enumerator LV_EVENT_PRESSING /* 按下对象(按下时连续调用)*/
enumerator LV_EVENT_PRESS_LOST /* 用户仍在按,但将光标/手指滑离对象 */
enumerator LV_EVENT_SHORT_CLICKED /* 用户在短时间内按下对象,然后释放它。如果拖动则不调用。*/
enumerator LV_EVENT_LONG_PRESSED /* 对象已被按下至少LV_INDEV_LONG_PRESS_TIME。如果拖动则不调用。*/
enumerator LV_EVENT_LONG_PRESSED_REPEAT /* LV_INDEV_LONG_PRESS_TIME每LV_INDEV_LONG_PRESS_REP_TIME毫秒调用一次。如果拖动则不调用。*/
enumerator LV_EVENT_CLICKED /* 如果未拖动则调用释放(无论长按) */
enumerator LV_EVENT_RELEASED /* 在对象释放后的每种情况下调用 */
enumerator LV_EVENT_DRAG_BEGIN
enumerator LV_EVENT_DRAG_END
enumerator LV_EVENT_DRAG_THROW_BEGIN
enumerator LV_EVENT_GESTURE /* 对象已被手势 */
enumerator LV_EVENT_KEY
enumerator LV_EVENT_FOCUSED
enumerator LV_EVENT_DEFOCUSED
enumerator LV_EVENT_LEAVE
enumerator LV_EVENT_VALUE_CHANGED /* 对象的值已更改(即,滑块已移动) */
enumerator LV_EVENT_INSERT
enumerator LV_EVENT_REFRESH
enumerator LV_EVENT_APPLY /* 单击“确定”,“应用”或类似的特定按钮 */
enumerator LV_EVENT_CANCEL /* 单击了“关闭”,“取消”或类似的特定按钮 */
enumerator LV_EVENT_DELETE /* 对象被删除 */
enumerator _LV_EVENT_LAST /* 活动数量 */
enum [anonymous]
信号供对象本身使用或扩展对象的功能。应用程序应使用lv_obj_set_event_cb来通知对象上发生的事件。
值:
enumerator LV_SIGNAL_CLEANUP /* 对象被删除 */
enumerator LV_SIGNAL_CHILD_CHG /* 子项已删除/添加 */
enumerator LV_SIGNAL_COORD_CHG /* 对象坐标/大小已更改 */
enumerator LV_SIGNAL_PARENT_SIZE_CHG /* 父类的大小已更改 */
enumerator LV_SIGNAL_STYLE_CHG /* 对象的样式已更改 */
enumerator LV_SIGNAL_BASE_DIR_CHG /* 基本目录已更改 */
enumerator LV_SIGNAL_REFR_EXT_DRAW_PAD /* 对象的额外填充已更改 */
enumerator LV_SIGNAL_GET_TYPELVGL /* 需要检索对象的类型 */
enumerator LV_SIGNAL_GET_STYLE /* 获取对象的样式 */
enumerator LV_SIGNAL_GET_STATE_DSC /* 获取对象的状态 */
enumerator LV_SIGNAL_HIT_TEST /* 命中测试 */
enumerator LV_SIGNAL_PRESSED /* 该对象已被按下 */
enumerator LV_SIGNAL_PRESSING /* 按下对象(按下时连续调用) */
enumerator LV_SIGNAL_PRESS_LOST /* 用户仍在按,但将光标/手指滑离对象 */
enumerator LV_SIGNAL_RELEASED /* 用户在短时间内按下对象,然后释放它。如果拖动则不调用。 */
enumerator LV_SIGNAL_LONG_PRESS /* 对象已被按下至少LV_INDEV_LONG_PRESS_TIME。如果拖动则不调用。 */
enumerator LV_SIGNAL_LONG_PRESS_REP /* LV_INDEV_LONG_PRESS_TIME每LV_INDEV_LONG_PRESS_REP_TIME毫秒调用一次。如果拖动则不调用。 */
enumerator LV_SIGNAL_DRAG_BEGIN
enumerator LV_SIGNAL_DRAG_THROW_BEGIN
enumerator LV_SIGNAL_DRAG_END
enumerator LV_SIGNAL_GESTURE /* 对象已被手势 */
enumerator LV_SIGNAL_LEAVE /* 通过输入设备单击或选择另一个对象 */
enumerator LV_SIGNAL_FOCUS
enumerator LV_SIGNAL_DEFOCUS
enumerator LV_SIGNAL_CONTROL
enumerator LV_SIGNAL_GET_EDITABLE
enum [anonymous]
值:
enumerator LV_PROTECT_NONE
enumerator LV_PROTECT_CHILD_CHG /* 禁用子类更换信号。被库使用 */
enumerator LV_PROTECT_PARENT /* 防止自动更改父级(例如,在lv_page中) */
enumerator LV_PROTECT_POS /* 防止自动定位(例如,在lv_cont布局中) */
enumerator LV_PROTECT_FOLLOW /* 防止在自动排序中遵循对象(例如,在lv_cont PRETTY布局中) */
enumerator LV_PROTECT_PRESS_LOST /* 如果indev按的是该对象,但在按时却扫了出去,请勿搜索其他对象。 */
enumerator LV_PROTECT_CLICK_FOCUS /* 单击以防止聚焦对象 */
enumerator LV_PROTECT_EVENT_TO_DISABLED /* 甚至将事件传递给禁用的对象 */
enum [anonymous]
值:
enumerator LV_STATE_DEFAULT /* 默认 */
enumerator LV_STATE_CHECKED /* 选中 */
enumerator LV_STATE_FOCUSED /* 聚焦 */
enumerator LV_STATE_EDITED /* 编辑 */
enumerator LV_STATE_HOVERED /* 盘旋 */
enumerator LV_STATE_PRESSED /* 按下 */
enumerator LV_STATE_DISABLED /* 禁用 */
enum [anonymous]
值:
enumerator LV_OBJ_PART_MAIN
enumerator _LV_OBJ_PART_VIRTUAL_LAST
enumerator _LV_OBJ_PART_REAL_LAST
enumerator LV_OBJ_PART_ALL
|
函数¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 | void lv_init( void ) /* LVGL初始化 */
void lv_deinit( void ) /*取消初始化“ lv”库当前仅在不使用自定义分配器或启用GC时实现。*/
lv_obj_t * lv_obj_create(lv_obj_t *parent,constlv_obj_t * copy)
功能:创建一个基本对象
返回:指向新对象的指针
形参:
parent:指向父对象的指针。如果为NULL,则将创建一个屏幕
copy: 指向基础对象的指针,如果不为NULL,则将从其复制新对象
lv_res_t lv_obj_del(lv_obj_t * obj )
功能:删除“ obj”及其所有子项
返回:LV_RES_INV,因为对象已删除
形参:
obj:指向要删除的对象的指针
void lv_obj_del_anim_ready_cb(lv_anim_t * a )
功能:动画就绪回调中易于使用的函数,可在动画就绪时删除对象
形参:
a:指向动画的指针
void lv_obj_del_async(struct _lv_obj_t * obj )
功能:辅助函数,用于异步删除对象。在无法直接在LV_EVENT_DELETE处理程序(即父级)中删除对象的情况下很有用。
形参:
obj:要删除的对象
void lv_obj_clean(lv_obj_t * obj )
功能:删除对象的所有子对象
形参:
obj:指向对象的指针
void lv_obj_invalidate_area(constlv_obj_t * obj,constlv_area_t *area)
功能:将对象的区域标记为void 。此区域将由“ lv_refr_task”重绘
形参:
obj:指向对象的指针
area:要重绘的区域
void lv_obj_invalidate(constlv_obj_t * obj )
功能:将对象标记为void ,因此将通过“ lv_refr_task”重绘其当前位置
形参:
obj:指向对象的指针
bool lv_obj_area_is_visible(constlv_obj_t * obj,lv_area_t * area )
判断对象的某个区域现在是否可见(甚至部分可见)
返回:true:可见;假:不可见(隐藏,在父母之外,在其他屏幕上等)
形参:
obj:指向对象的指针
area:检查。该区域的可见部分将写回到这里。
bool lv_obj_is_visible(constlv_obj_t * obj )
功能:判断一个对象现在是否可见(甚至部分可见)
返回:true:可见;假:不可见(隐藏,在父母之外,在其他屏幕上等)
形参:
obj:指向对象的指针
void lv_obj_set_parent(lv_obj_t * obj,lv_obj_t *parent)
功能:为对象设置一个新的父对象。其相对位置将相同。
形参:
obj:指向对象的指针。不能是屏幕。
parent:指向新父对象的指针。(不能为NULL)
void lv_obj_move_foreground(lv_obj_t * obj )
功能:移动并反对前景
形参:
obj:指向对象的指针
void lv_obj_move_background(lv_obj_t * obj )
功能:移动并反对背景
形参:
obj:指向对象的指针
void lv_obj_set_pos(lv_obj_t * obj,lv_coord_t x,lv_coord_t y )
功能:设置对象的相对位置(相对于父对象)
形参:
obj:指向对象的指针
x:距父级左侧的新距离
y:距父级顶部的新距离
void lv_obj_set_x(lv_obj_t * obj,lv_coord_t x )
功能:设置对象的x坐标
形参:
obj:指向对象的指针
x:从父级到左侧的新距离
void lv_obj_set_y(lv_obj_t * obj,lv_coord_t y )
功能:设置对象的y坐标
形参:
obj:指向对象的指针
y:距父级顶部的新距离
void lv_obj_set_size(lv_obj_t * obj,lv_coord_t w,lv_coord_t h )
功能:设置对象的大小
形参:
obj:指向对象的指针
w:新宽度
h:新高度
void lv_obj_set_width(lv_obj_t * obj,lv_coord_t w )
功能:设置对象的宽度
形参:
obj:指向对象的指针
w:新宽度
void lv_obj_set_height(lv_obj_t * obj,lv_coord_t h )
功能:设定物件的高度
形参:
obj:指向对象的指针
h:新高度
void lv_obj_set_width_fit(lv_obj_t * obj,lv_coord_t w )
功能:设置通过左右填充减少的宽度。
形参:
obj:指向对象的指针
w:没有填充的宽度
void lv_obj_set_height_fit(lv_obj_t * obj,lv_coord_t h )
功能:设置通过顶部和底部填充减小的高度。
形参:
obj:指向对象的指针
h:不带衬垫的高度
void lv_obj_set_width_margin(lv_obj_t * obj,lv_coord_t w )
功能:通过考虑左边距和右边距来设置对象的宽度。物体的宽度为obj_w = w - margin_left - margin_right
形参:
obj:指向对象的指针
w:包括边距在内的新高度
void lv_obj_set_height_margin(lv_obj_t * obj,lv_coord_t h )
功能:通过考虑顶部和底部边距来设置对象的高度。物体高度将为obj_h = h - margin_top - margin_bottom
形参:
obj:指向对象的指针
h:包括边距在内的新高度
void lv_obj_align(lv_obj_t * obj,constlv_obj_t * base,lv_align_t align,lv_coord_t x_ofs,lv_coord_t y_ofs )
功能:将一个对象与另一个对象对齐。
形参:
obj:指向要对齐的对象的指针
base:指向对象的指针(如果为NULL,则使用父对象)。'obj'将与其对齐。
align:对齐类型(请参见“ lv_align_t”enum )
x_ofs:对齐后的x坐标偏移
y_ofs:对齐后的y坐标偏移
void lv_obj_align_x(lv_obj_t * obj,constlv_obj_t * base,lv_align_t align,lv_coord_t x_ofs )
功能:将一个对象与另一个对象水平对齐。
形参:
obj:指向要对齐的对象的指针
base:指向对象的指针(如果为NULL,则使用父对象)。'obj'将与其对齐。
align:对齐类型(请参见“ lv_align_t”enum )
x_ofs:对齐后的x坐标偏移
void lv_obj_align_y(lv_obj_t * obj,constlv_obj_t * base,lv_align_t align,lv_coord_t y_ofs )
功能:将一个对象与另一个对象垂直对齐。
形参:
obj:指向要对齐的对象的指针
base:指向对象的指针(如果为NULL,则使用父对象)。'obj'将与其对齐。
align:对齐类型(请参见“ lv_align_t”enum )
y_ofs:对齐后的y坐标偏移
void lv_obj_align_mid(lv_obj_t * obj,constlv_obj_t * base,lv_align_t align,lv_coord_t x_ofs,lv_coord_t y_ofs )
功能:将一个对象与另一个对象对齐。
形参:
obj:指向要对齐的对象的指针
base:指向对象的指针(如果为NULL,则使用父对象)。'obj'将与其对齐。
align:对齐类型(请参见“ lv_align_t”enum )
x_ofs:对齐后的x坐标偏移
y_ofs:对齐后的y坐标偏移
void lv_obj_align_mid_x(lv_obj_t * obj,constlv_obj_t * base,lv_align_t align,lv_coord_t x_ofs )
功能:将对象的中点与另一个对象水平对齐。
形参:
obj:指向要对齐的对象的指针
base:指向对象的指针(如果为NULL,则使用父对象)。'obj'将与其对齐。
align:对齐类型(请参见“ lv_align_t”enum )
x_ofs:对齐后的x坐标偏移
void lv_obj_align_mid_y(lv_obj_t * obj,constlv_obj_t * base,lv_align_t align,lv_coord_t y_ofs )
功能:将对象的中点与另一个对象垂直对齐。
形参:
obj:指向要对齐的对象的指针
base:指向对象的指针(如果为NULL,则使用父对象)。'obj'将与其对齐。
align:对齐类型(请参见“ lv_align_t”enum )
y_ofs:对齐后的y坐标偏移
void lv_obj_realign(lv_obj_t * obj )
功能:根据最后一个lv_obj_align参数重新对齐对象。
形参:
obj:指向对象的指针
void lv_obj_set_auto_realign(lv_obj_t * obj,bool en )
功能:当对象的大小根据最后一个lv_obj_align参数更改时,启用对象的自动重新对齐。
形参:
obj:指向对象的指针
en:true:启用自动重新对齐;false:禁用自动重新对齐
void lv_obj_set_ext_click_area(lv_obj_t * OBJ,lv_coord_t left,lv_coord_t right,lv_coord_t top,lv_coord_t bottom)
功能:设置扩展的可点击区域的大小
形参:
obj:指向对象的指针
left:可扩展点击位于左侧[px]
right:可扩展点击位于右侧[px]
top:扩展的可点击位于顶部[px]
bottom:可扩展点击位于底部[px]
void lv_obj_add_style(lv_obj_t * obj,uint8_t part,lv_style_t * style )
功能:将新样式添加到对象的样式列表。
形参:
obj:指向对象的指针
part:应设置样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
style:指向要添加样式的指针(仅会保存其指针)
void lv_obj_remove_style(lv_obj_t * obj,uint8_t part,lv_style_t * style )
功能:从对象的样式列表中删除样式。
形参:
obj:指向对象的指针
part:应设置样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
style:指向要删除的样式的指针
void lv_obj_clean_style_list(lv_obj_t * obj,uint8_t part )
功能:将样式重置为默认(空)状态。释放所有已使用的内存,并取消待处理的相关转换。通常用于`LV_SIGN_CLEAN_UP。
形参:
obj:指向对象的指针
part:应重置样式列表的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
void lv_obj_reset_style_list(lv_obj_t * obj,uint8_t part )
功能:将样式重置为默认(空)状态。释放所有已使用的内存,并取消待处理的相关转换。还通知对象有关样式更改的信息。
形参:
obj:指向对象的指针
part:应重置样式列表的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
void lv_obj_refresh_style(lv_obj_t * obj,uint8_t part,lv_style_property_t prop )
功能:通知对象(及其子对象)其样式已修改
形参:
obj:指向对象的指针
prop:LV_STYLE_PROP_ALL或LV_STYLE_...财产。它用于优化需要刷新的内容。
void lv_obj_report_style_mod( lv_style_t *style)
功能:修改样式时通知所有对象
形参:
style:指向样式的指针。仅具有这种样式的对象将被通知(NULL通知所有对象)
void _lv_obj_set_style_local_color(lv_obj_t * OBJ,uint8_t part,lv_style_property_t prop,lv_color_t the)
功能:在给定状态下设置对象的一部分的局部样式属性。
注意:
1.不应直接使用。请改用特定的属性get函数。例如:lv_obj_style_get_border_opa()
2.由于性能原因,不会检查属性是否确实具有颜色类型
形参:
obj:指向对象的指针
part:应设置样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
prop:样式属性与状态或。例如LV_STYLE_BORDER_COLOR | (LV_STATE_PRESSED << LV_STYLE_STATE_POS)
the:要设置的值
void _lv_obj_set_style_local_int(lv_obj_t * OBJ,uint8_t part,lv_style_property_t prop,lv_style_int_t the)
功能:在给定状态下设置对象的一部分的局部样式属性。
注意:
1.不应直接使用。请改用特定的属性get函数。例如:lv_obj_style_get_border_opa()
2.出于性能原因,不检查该属性是否确实具有整数类型
形参:
obj:指向对象的指针
part:应设置样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
prop:样式属性与状态或。例如LV_STYLE_BORDER_WIDTH | (LV_STATE_PRESSED << LV_STYLE_STATE_POS)
the:要设置的值
void _lv_obj_set_style_local_opa(lv_obj_t * obj,uint8_t part,lv_style_property_t prop,lv_opa_t opa )
功能:在给定状态下设置对象的一部分的局部样式属性。
注意:
1.不应直接使用。请改用特定的属性get函数。例如:lv_obj_style_get_border_opa()
2.由于性能原因,不检查属性是否确实具有不透明度类型
形参:
obj:指向对象的指针
part:应设置样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
prop:样式属性与状态或。例如LV_STYLE_BORDER_OPA | (LV_STATE_PRESSED << LV_STYLE_STATE_POS)
the:要设置的值
void _lv_obj_set_style_local_ptr(lv_obj_t * obj,uint8_t type,lv_style_property_t prop,constvoid *the)
功能:在给定状态下设置对象的一部分的局部样式属性。
注意:
1.不应直接使用。请改用特定的属性get函数。例如:lv_obj_style_get_border_opa()
2.出于性能原因,不检查该属性是否确实具有指针类型
形参:
obj:指向对象的指针
part:应设置样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
prop:样式属性与状态或。例如LV_STYLE_TEXT_FONT | (LV_STATE_PRESSED << LV_STYLE_STATE_POS)
the:要设置的值
bool lv_obj_remove_style_local_prop(lv_obj_t * obj,uint8_t part,lv_style_property_t prop )
功能:从具有给定状态的对象的一部分中删除局部样式属性。
注意:
不应直接使用。请改用特定的属性删除功能。例如:lv_obj_style_remove_border_opa()
返回:true:已找到并删除了该属性;false:找不到该属性
形参:
obj:指向对象的指针
part:对象的应删除样式属性的部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
prop:样式属性与状态或。例如LV_STYLE_TEXT_FONT | (LV_STATE_PRESSED << LV_STYLE_STATE_POS)
void _lv_obj_disable_style_caching(lv_obj_t * obj,bool dis )
功能:启用/禁用对象的样式缓存
形参:
obj:指向对象的指针
dis:true:禁用;false:启用(重新启用)
void lv_obj_set_hidden(lv_obj_t * obj,bool en )
功能:隐藏对象。它不会显示和单击。
形参:
obj:指向对象的指针
en:true:隐藏对象
void lv_obj_set_adv_hittest(lv_obj_t * obj,bool en )
功能:设置是否在对象上启用高级命中测试
形参:
obj:指向对象的指针
en:true:启用高级命中测试
void lv_obj_set_click(lv_obj_t * obj,bool en )
功能:启用或禁用对象单击
形参:
obj:指向对象的指针
en:true:使对象可点击
void lv_obj_set_top(lv_obj_t * obj,bool en )
功能:如果单击该对象或其任何子对象,则启用该对象
形参:
obj:指向对象的指针
en:true:启用自动顶部功能
void lv_obj_set_drag(lv_obj_t * obj,bool en )
功能:启用对象拖动
形参:
obj:指向对象的指针
en:true:使对象可拖动
void lv_obj_set_drag_dir(lv_obj_t * obj,lv_drag_dir_t drag_dir )
功能:设置可以拖动对象的方向
形参:
obj:指向对象的指针
drag_dir:允许的拖动方向的按位或
void lv_obj_set_drag_throw(lv_obj_t * obj,bool en )
功能:拖动后启用对象投掷
形参:
obj:指向对象的指针
en:true:启用拖动
void lv_obj_set_drag_parent(lv_obj_t * obj,bool en )
功能:启用将父项用于拖动相关的操作。如果尝试拖动对象,则将父对象移动
形参:
obj:指向对象的指针
en:true:为对象启用“拖动父对象”
void lv_obj_set_focus_parent(lv_obj_t * obj,bool en )
功能:启用以将父级用于焦点状态。当对象聚焦时,父级将获得状态(仅可见)
形参:
obj:指向对象的指针
en:true:为对象启用“焦点父对象”
void lv_obj_set_gesture_parent(lv_obj_t * obj,bool en )
功能:启用将父项用于手势相关操作。如果尝试手势对象,则将父对象移动
形参:
obj:指向对象的指针
en:true:为对象启用“手势父级”
void lv_obj_set_parent_event(lv_obj_t * obj,bool en )
功能:也将事件传播给父级
形参:
obj:指向对象的指针
en:true:启用事件传播
void lv_obj_set_base_dir(lv_obj_t * obj,lv_bidi_dir_t dir )
功能:设置对象的基本方向
注意:
仅在启用LV_USE_BIDI的情况下才有效。
形参:
obj:指向对象的指针
dir:新的基本方向。 LV_BIDI_DIR_LTR/RTL/AUTO/INHERIT
void lv_obj_add_protect(lv_obj_t * obj,uint8_t prot )
功能:在保护字段中设置一个或多个位
形参:
obj:指向对象的指针
prot:来自“或”的值 lv_protect_t
void lv_obj_clear_protect(lv_obj_t * obj,uint8_t prot )
功能:清除保护字段中的一个或多个位
形参:
obj:指向对象的指针
prot:来自“或”的值 lv_protect_t
void lv_obj_set_state(lv_obj_t * obj,lv_state_t state)
功能:设置对象的状态(完全覆盖)。如果在样式中指定,则过渡动画将从前一状态开始到当前状态
形参:
obj:指向对象的指针
state:新状态
void lv_obj_add_state(lv_obj_t * obj,lv_state_t state)
功能:将一个或多个给定状态添加到对象。其他状态位将保持不变。如果在样式中指定,则过渡动画将从前一状态开始到当前状态
形参:
obj:指向对象的指针
state:要添加的状态位。例如LV_STATE_PRESSED | LV_STATE_FOCUSED
void lv_obj_clear_state(lv_obj_t * obj,lv_state_t state)
功能:删除对象的给定状态。其他状态位将保持不变。如果在样式中指定,则过渡动画将从前一状态开始到当前状态
形参:
obj:指向对象的指针
state:要删除的状态位。例如LV_STATE_PRESSED | LV_STATE_FOCUSED
void lv_obj_finish_transitions(lv_obj_t * obj,uint8_t part )
功能:在对象的一部分上完成所有挂起的过渡
形参:
obj:指向对象的指针
part:对象的一部分,例如LV_BRN_PART_MAIN或LV_OBJ_PART_ALL所有部分
void lv_obj_set_event_cb(lv_obj_t * obj,lv_event_cb_t event_cb )
功能:为对象设置事件处理函数。用户用于对对象发生的事件做出反应。
形参:
obj:指向对象的指针
event_cb:新事件功能
lv_res_t lv_event_send(lv_obj_t * obj,lv_event_t event,constvoid * data)
功能:向对象发送事件
返回:LV_RES_OK:obj在事件中没有被删除;LV_RES_INV:obj在事件中被删除
形参:
obj:指向对象的指针
event:来自的事件类型lv_event_t。
data:取决于对象类型和事件的任意数据。(通常NULL)
lv_res_t lv_event_send_refresh(lv_obj_t * obj )
功能:将LV_EVENT_REFRESH事件发送到对象
返回:LV_RES_OK:成功,LV_RES_INV:对象由于该事件而变得void (例如,删除)。
形参:
obj:指向一个对象。(不能为NULL)
void lv_event_send_refresh_recursive(lv_obj_t * obj )
功能:将LV_EVENT_REFRESH事件发送给对象及其所有子对象
形参:
obj:指向一个对象的指针,或者为NULL以刷新所有显示的所有对象
lv_res_t lv_event_send_func(lv_event_cb_t event_xcb,lv_obj_t * obj,lv_event_t event,constvoid *data)
功能:使用对象,事件和数据调用事件函数。
返回:LV_RES_OK:obj在事件中没有被删除;LV_RES_INV:obj在事件中被删除
形参:
event_xcb:事件回调函数。如果NULL LV_RES_OK返回,则不执行任何操作。(参数名称中的“ x”表示它不是完全通用的函数,因为它不遵循约定)func_name(object, callback, ...)
obj:指向与事件关联的对象的指针(可以NULL简单地调用event_cb)
event: 一个事件
data:指向自定义数据的指针
constvoid * lv_event_get_data(void )
功能:获取data当前事件的参数
返回
该data参数
void lv_obj_set_signal_cb(lv_obj_t * obj,lv_signal_cb_t signal_cb )
功能:设置对象的信号功能。由库内部使用。始终在新信号中调用前一个信号功能。
形参:
obj:指向对象的指针
signal_cb:新信号功能
lv_res_t lv_signal_send(lv_obj_t * obj,lv_signal_t signal,void * param )
功能:向对象发送事件
返回:LV_RES_OK或LV_RES_INV
形参:
obj:指向对象的指针
event:来自的事件类型lv_event_t。
void lv_obj_set_design_cb(lv_obj_t * obj,lv_design_cb_t design_cb )
功能:为对象设置新的设计功能
形参:
obj:指向对象的指针
design_cb:新的设计功能
void * lv_obj_allocate_ext_attr(lv_obj_t * obj,uint16_t ext_size )
功能:分配一个新的分机。对象的数据
返回:指向分配的ext的指针
形参:
obj:指向对象的指针
ext_size:新分机的大小。数据
void lv_obj_refresh_ext_draw_pad(lv_obj_t * obj )
功能:向对象发送“ LV_SIGNAL_REFR_EXT_SIZE”信号以刷新扩展的绘制区域。lv_obj_invalidate(obj)此功能后,需要手动使对象void 。
形参:
obj:指向对象的指针
lv_obj_t * lv_obj_get_screen(constlv_obj_t * obj )
功能:返回对象的屏幕
返回:指向屏幕的指针
形参:
obj:指向对象的指针
lv_disp_t * lv_obj_get_disp(constlv_obj_t * obj )
功能:获取对象的显示
返回:指针对象的显示
lv_obj_t * lv_obj_get_parent(constlv_obj_t * obj )
功能:返回对象的父对象
返回:指向“ obj”的父对象的指针
形参:
obj:指向对象的指针
lv_obj_t * lv_obj_get_child(constlv_obj_t * obj,constlv_obj_t * child )
功能:遍历对象的子项(从“最新的,最后创建的”开始)
返回:'act_child'之后的子级;如果没有更多子级,则为NULL
形参:
obj:指向对象的指针
child:第一次调用时为NULL,以获取下一个子类,以后再返回上一个返回值
lv_obj_t * lv_obj_get_child_back(constlv_obj_t * obj,constlv_obj_t * child )
功能:遍历对象的子项(从“最早的”开始,首先创建)
返回:'act_child'之后的子级;如果没有更多子级,则为NULL
形参:
obj:指向对象的指针
child:第一次调用时为NULL,以获取下一个子类,以后再返回上一个返回值
uint16_t lv_obj_count_children(constlv_obj_t * obj )
功能:计算对象的子代(仅直接在“ obj”上的子代)
返回:'obj'的子代号
形参:
obj:指向对象的指针
uint16_t lv_obj_count_children_recursive(constlv_obj_t * obj )
功能:递归计算对象的子代
返回:'obj'的子代号
形参:
obj:指向对象的指针
void lv_obj_get_coords(constlv_obj_t * obj,lv_area_t * cords_p )
功能:将对象的坐标复制到区域
形参:
obj:指向对象的指针
cords_p:指向存储坐标的区域的指针
void lv_obj_get_inner_coords(constlv_obj_t * obj,lv_area_t * coords_p )
功能:减少由lv_obj_get_coords()对象的图形可用区域重试的区域。(没有边框的大小或其他额外的图形元素)
形参:
coords_p:将结果区域存储在此处
lv_coord_t lv_obj_get_x(constlv_obj_t * obj )
功能:获取对象的x坐标
返回:“ obj”到其父对象左侧的距离
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_y(constlv_obj_t * obj )
功能:获取对象的y坐标
返回:“ obj”到其父对象顶部的距离
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_width(constlv_obj_t * obj )
功能:获取对象的宽度
返回:宽度
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_height(constlv_obj_t * obj )
功能:获取对象的高度
返回:高度
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_width_fit(constlv_obj_t * obj )
功能:通过左右填充减少宽度。
返回:仍然适合容器的宽度
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_height_fit(constlv_obj_t * obj )
功能:通过顶部底部填充减少高度。
返回:仍然适合容器的高度
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_height_margin(lv_obj_t * obj )
功能:通过考虑顶部和底部边距来获取对象的高度。返回的高度将是obj_h + margin_top + margin_bottom
返回:包括您的边距在内的高度
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_width_margin(lv_obj_t * obj )
功能:通过考虑左边距和右边距来获得对象的宽度。返回的宽度将是obj_w + margin_left + margin_right
返回:包括您的边距在内的高度
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_width_grid(lv_obj_t * obj,uint8_t div,uint8_t span )
功能:划分对象的宽度并获得给定列数的宽度。考虑填充。
返回:根据给定参数的宽度
形参:
obj:指向对象的指针
div:表示假设有多少列。如果为1,则宽度将设置为父级的宽度;如果为2,则只有父级宽度的一半-父级的内部填充;如果为3,则只有第三个父级宽度-2 *父级的内部填充
span:合并了多少列
lv_coord_t lv_obj_get_height_grid(lv_obj_t * obj,uint8_t div,uint8_t span )
功能:划分对象的高度并获得给定列数的宽度。考虑填充。
返回:根据给定参数的高度
形参:
obj:指向对象的指针
div:表示假设有多少行。如果为1,则将设置父级的高度;如果为2,则只有父级的一半高度-父级的内部填充;如果只有3,则只有第三级父级的高度-2 *父级的内部填充
span:合并了多少行
bool lv_obj_get_auto_realign(constlv_obj_t * obj )
功能:获取对象的自动重新对齐属性。
返回:true:启用自动重新对齐;false:禁用自动重新对齐
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_ext_click_pad_left(constlv_obj_t * obj )
功能:获取扩展的可点击区域的左侧填充
返回:扩展的左填充
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_ext_click_pad_right(constlv_obj_t * obj )
功能:获取扩展的可点击区域的正确填充
返回:扩展的右填充
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_ext_click_pad_top(constlv_obj_t * obj )
功能:获取扩展的可点击区域的顶部填充
返回:扩展的顶部填充
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_ext_click_pad_bottom(constlv_obj_t * obj )
功能:获取扩展的可点击区域的底部填充
返回:扩展的底部填充
形参:
obj:指向对象的指针
lv_coord_t lv_obj_get_ext_draw_pad(constlv_obj_t * obj )
功能:获取对象的扩展尺寸属性
返回:扩展尺寸属性
形参:
obj:指向对象的指针
lv_style_list_t * lv_obj_get_style_list(constlv_obj_t * obj,uint8_t部分)
功能:获取对象零件的样式列表。
返回:指向样式列表的指针。(可以NULL)
形参:
obj:指向对象的指针。
part:part应该获取样式列表的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
lv_style_int_t _lv_obj_get_style_int(constlv_obj_t * obj,uint8_t part,lv_style_property_t prop )
功能:获取处于对象当前状态的对象的一部分的样式属性。如果正在运行过渡,则将其考虑在内
返回:
给定零件在当前状态下的属性值。如果找不到该属性,则将返回默认值。
注意:
1.不应直接使用。请改用特定的属性get函数。例如:lv_obj_style_get_border_width()
2.出于性能原因,不检查该属性是否确实具有整数类型
形参:
obj:指向对象的指针
part:应获取样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
prop:要获取的属性。例如LV_STYLE_BORDER_WIDTH。对象的状态将在内部添加
lv_color_t _lv_obj_get_style_color(constlv_obj_t * obj,uint8_t part,lv_style_property_t prop )
功能:获取处于对象当前状态的对象的一部分的样式属性。如果正在运行过渡,则将其考虑在内
返回:
给定零件在当前状态下的属性值。如果找不到该属性,则将返回默认值。
注意:
1.不应直接使用。请改用特定的属性get函数。例如:lv_obj_style_get_border_color()
2.由于性能原因,不会检查属性是否确实具有颜色类型
形参:
obj:指向对象的指针
part:应获取样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
prop:要获取的属性。例如LV_STYLE_BORDER_COLOR。对象的状态将在内部添加
lv_opa_t _lv_obj_get_style_opa(constlv_obj_t * obj,uint8_t part,lv_style_property_t prop )
功能:获取处于对象当前状态的对象的一部分的样式属性。如果正在运行过渡,则将其考虑在内
返回:
给定零件在当前状态下的属性值。如果找不到该属性,则将返回默认值。
注意:
1.不应直接使用。请改用特定的属性get函数。例如:lv_obj_style_get_border_opa()
2.由于性能原因,不检查属性是否确实具有不透明度类型
形参:
obj:指向对象的指针
part:应获取样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
prop:要获取的属性。例如LV_STYLE_BORDER_OPA。对象的状态将在内部添加
constvoid * _lv_obj_get_style_ptr(constlv_obj_t * obj,uint8_t part,lv_style_property_t prop )
功能:获取处于对象当前状态的对象的一部分的样式属性。如果正在运行过渡,则将其考虑在内
返回:
给定零件在当前状态下的属性值。如果找不到该属性,则将返回默认值。
注意:
1.不应直接使用。请改用特定的属性get函数。例如:lv_obj_style_get_border_opa()
2.出于性能原因,不检查该属性是否确实具有指针类型
形参:
obj:指向对象的指针
part:应获取样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
prop:要获取的属性。例如LV_STYLE_TEXT_FONT。对象的状态将在内部添加
lv_style_t * lv_obj_get_local_style(lv_obj_t * obj,uint8_t part)
功能:获取对象部分的局部样式。
返回:
指向本地样式的指针(如果存在)NULL。
形参:
obj:指向对象的指针
part:应设置样式属性的对象部分。例如LV_OBJ_PART_MAIN,LV_BTN_PART_MAIN,LV_SLIDER_PART_KNOB
bool lv_obj_get_hidden(constlv_obj_t * obj )
功能:获取对象的隐藏属性
返回:
true:对象被隐藏
形参:
obj:指向对象的指针
bool lv_obj_get_adv_hittest(constlv_obj_t * obj )
功能:获取是否在对象上启用了高级命中测试
返回:
true:启用高级匹配测试
形参:
obj:指向对象的指针
bool lv_obj_get_click(constlv_obj_t * obj )
功能:获取对象的点击启用属性
返回:
true:可点击对象
形参:
obj:指向对象的指针
bool lv_obj_get_top(constlv_obj_t * obj )
功能:获取对象的顶部启用属性
返回:
true:启用自动顶部功能
形参:
obj:指向对象的指针
bool lv_obj_get_drag(constlv_obj_t * obj )
功能:获取对象的拖动启用属性
返回:
true:对象可拖动
形参:
obj:指向对象的指针
lv_drag_dir_t lv_obj_get_drag_dir(constlv_obj_t * obj )
功能:获取可以拖动对象的方向
返回:
可以将对象拖入允许方向的按位或
形参:
obj:指向对象的指针
bool lv_obj_get_drag_throw(constlv_obj_t * obj )
功能:获取对象的拖动启动属性
返回:
true:启用拖动
形参:
obj:指向对象的指针
bool lv_obj_get_drag_parent(constlv_obj_t * obj )
功能:获取对象的拖动父级属性
返回:
true:启用拖动父级
形参:
obj:指向对象的指针
bool lv_obj_get_focus_parent(constlv_obj_t * obj )
功能:获取对象的焦点父级属性
返回:
true:启用焦点父级
形参:
obj:指向对象的指针
bool lv_obj_get_parent_event(constlv_obj_t * obj )
功能:获取对象的拖动父级属性
返回:
true:启用拖动父级
形参:
obj:指向对象的指针
bool lv_obj_get_gesture_parent(constlv_obj_t * obj )
功能:获取对象的手势父级属性
返回:
true:启用手势父级
形参:
obj:指向对象的指针
lv_bidi_dir_t lv_obj_get_base_dir(constlv_obj_t * obj )
uint8_t lv_obj_get_protect(constlv_obj_t * obj )
功能:获取对象的保护字段
返回:
保护字段(“的”或值lv_protect_t)
形参:
obj:指向对象的指针
bool lv_obj_is_protected(constlv_obj_t * obj,uint8_t prot )
功能:检查是否已设置给定保护位字段的至少一位
返回:
false:未设置任何给定位,true:至少设置了一位
形参:
obj:指向对象的指针
prot:保护要测试的位(的“或”值lv_protect_t)
lv_state_t lv_obj_get_state(constlv_obj_t * obj,uint8_t part)
lv_signal_cb_t lv_obj_get_signal_cb(constlv_obj_t * obj )
功能:获取对象的信号功能
返回:
信号功能
形参:
obj:指向对象的指针
lv_design_cb_t lv_obj_get_design_cb(constlv_obj_t * obj )
功能:获取对象的设计功能
返回:
设计功能
形参:
obj:指向对象的指针
lv_event_cb_t lv_obj_get_event_cb(constlv_obj_t * obj )
功能:获取对象的事件函数
返回:
事件功能
形参:
obj:指向对象的指针
bool lv_obj_is_point_on_coords(lv_obj_t * obj,constlv_point_t *点)
功能:
检查给定的屏幕空间点是否在对象的坐标上。该方法主要用于高级命中测试算法,以检查该点是否在对象内(作为优化)。
形参:
obj:要检查的对象
point:屏幕空间点
bool lv_obj_hittest(lv_obj_t * obj,lv_point_t * point )
功能:对在屏幕空间中特定位置的对象进行命中测试。
返回:
如果对象被认为在该点之下,则返回true
形参:
obj:对象进行命中测试
point:屏幕空间点
void * lv_obj_get_ext_attr(constlv_obj_t * obj )
获取ext指针
返回:
ext指针,而不是动态版本用作ext-> data1,而不是da(ext)-> data1
形参:
obj:指向对象的指针
void lv_obj_get_type(constlv_obj_t * obj,lv_obj_type_t * buf )
功能:获取对象及其祖先类型。将其名称以type_buf当前类型开头。例如buf.type [0] =“ lv_btn”,buf.type [1] =“ lv_cont”,buf.type [2] =“ lv_obj”
形参:
obj:指向应获取类型的对象的指针
buf:指向用于lv_obj_type_t存储类型的缓冲区的指针
lv_obj_user_data_t lv_obj_get_user_data(constlv_obj_t * obj )
功能:获取对象的用户数据
返回:
用户数据
形参:
obj:指向对象的指针
lv_obj_user_data_t * lv_obj_get_user_data_ptr(constlv_obj_t * obj )
功能:获取指向对象的用户数据的指针
返回:
指向用户数据的指针
形参:
obj:指向对象的指针
void lv_obj_set_user_data(lv_obj_t * obj,lv_obj_user_data_t数据)
功能:设置对象的用户数据。数据将被复制。
形参:
obj:指向对象的指针
data: 用户数据
void * lv_obj_get_group(constlv_obj_t * obj )
功能:获取对象组
返回:
指向对象组的指针
形参:
obj:指向对象的指针
bool lv_obj_is_focused(constlv_obj_t * obj )
功能:判断对象是否是组的聚焦对象。
返回:
true:对象已聚焦,false:对象未聚焦或不在组中
形参:
obj:指向对象的指针
lv_obj_t * lv_obj_get_focused_obj(constlv_obj_t * obj )
功能:通过考虑获得真正专注的对象focus_parent。
返回:
真正聚焦的对象
形参:
obj:起始对象
lv_res_t lv_obj_handle_get_type_signal(lv_obj_type_t * buf,const char *name)
功能:用于信号回调中以处理LV_SIGNAL_GET_TYPE信号
返回:
LV_RES_OK
形参:
buf:的指针lv_obj_type_t。(param在信号回调中)
name:对象的名称。例如“ lv_btn”。(仅保存指针)
void lv_obj_init_draw_rect_dsc(lv_obj_t * obj,uint8_t type ,lv_draw_rect_dsc_t * draw_dsc )
功能:根据对象的样式初始化矩形描述符
注意:
仅设置相关字段。例如,是否将不评估其他边框属性。border width == 0
形参:
obj:指向对象的指针
type:样式类型。例如LV_OBJ_PART_MAIN,LV_BTN_SLIDER_KOB
draw_dsc:描述符的初始化
void lv_obj_init_draw_label_dsc(lv_obj_t * obj,uint8_t类型,lv_draw_label_dsc_t * draw_dsc )
void lv_obj_init_draw_img_dsc(lv_obj_t * obj,uint8_t part,lv_draw_img_dsc_t * draw_dsc )
void lv_obj_init_draw_line_dsc(lv_obj_t * obj,uint8_t part,lv_draw_line_dsc_t * draw_dsc )
lv_coord_t lv_obj_get_draw_rect_ext_pad_size(lv_obj_t * obj,uint8_t part )
功能:获取所需的额外大小(围绕对象部分)以绘制阴影,轮廓,值等。
形参:
obj:指向对象的指针
part:对象的一部分
void lv_obj_fade_in(lv_obj_t * obj,uint32_t时间,uint32_t延迟)
功能:使用opa_scale动画淡入(从透明到完全覆盖)对象及其所有子对象。
形参:
obj:淡入的对象
time:动画的持续时间[ms]
delay:等待动画开始播放[ms]
void lv_obj_fade_out(lv_obj_t * obj,uint32_t时间,uint32_t延迟)
功能:使用opa_scale动画淡出(从完全覆盖到透明)对象及其所有子对象。
形参:
obj:淡入的对象
time:动画的持续时间[ms]
delay:等待动画开始播放[ms]
bool lv_debug_check_obj_type(constlv_obj_t * obj,constchar * obj_type )
功能:检查是否有给定类型的对象
返回:
true:有效
形参:
obj:指向对象的指针
obj_type:对象的类型。(例如“ lv_btn”)
bool lv_debug_check_obj_valid(constlv_obj_t * obj )
功能:检查是否还有任何对象“处于活动状态”以及层次struct 的一部分
返回:
true:有效
形参:
obj:指向对象的指针
obj_type:对象的类型。(例如“ lv_btn”)
|