lv_scr_load_anim(scr, transition_type, time, delay, auto_del)
这行代码的作用是加载一个新的屏幕并使用动画效果进行过渡。具体来说,它有以下参数:
scr:要加载的屏幕对象。
transition_type:过渡动画的类型,比如淡入淡出、滑动等。
time:过渡动画的持续时间,以毫秒为单位。
delay:过渡动画的延迟时间,以毫秒为单位。
auto_del:可选参数,表示是否自动删除之前的屏幕对象。
例如,如果你想要在你的LVGL应用程序中使用动画效果加载一个新的屏幕,你可以调用这个函数并传递屏幕对象、过渡类型、持续时间、延迟时间和是否自动删除旧屏幕的参数。
lv_disp_drv_register
lv_disp_drv_register 是一个函数,用于将一个新的显示驱动程序注册到 LVGL 中。
LVGL 是一个嵌入式图形库,用于在嵌入式设备上创建图形用户界面(GUI)。lv_disp_drv_register 函数是注册一个新的显示驱动程序所必需的,因为它告诉 LVGL 如何与特定的显示硬件进行交互。
具体来说,lv_disp_drv_register 函数需要一个 lv_disp_drv_t 类型的结构体作为参数,该结构体包含有关显示驱动程序的信息,例如显示器的分辨率、显示面积、像素格式等。通过调用 lv_disp_drv_register 函数并传递这个结构体作为参数,LVGL 就能够使用这个新的显示驱动程序来显示图形界面。
需要注意的是,lv_disp_drv_register 函数必须在 LVGL 初始化之前调用,以确保 LVGL 能够正确地初始化并使用该驱动程序。
lv_disp_set_default(disp)
lv_disp_set_default 是一个函数,用于将指定的显示器设置为默认显示器。在 LittlevGL 图形库中,每个显示器都有一个唯一的 ID,可以使用 lv_disp_get_default 函数获取当前默认显示器的 ID。
通过调用 lv_disp_set_default 函数并传递一个 lv_disp_t 类型的指针作为参数,我们可以设置指定的显示器为默认显示器。这意味着,当 LittlevGL 需要显示内容时,它会使用默认显示器来显示内容。
需要注意的是,每个 LittlevGL 应用程序只能有一个默认显示器。如果需要在应用程序中使用多个显示器,需要通过调用 lv_disp_get_next 函数获取下一个可用的显示器,并将其设置为当前显示器。
lv_obj_add/clear_state(obj, LV_STATE_...)
`lv_obj_add_state` 和 `lv_obj_clear_state` 是 LittlevGL 图形库中用于添加/清除指定状态的函数。在 LittlevGL 中,每个对象都可以有多个状态,可以通过将状态添加到对象上来改变对象的外观和行为。
`lv_obj_add_state` 函数用于将指定状态添加到对象上。它接受两个参数:一个是要添加状态的对象,另一个是要添加的状态。状态是通过 `LV_STATE_` 宏来表示的,例如 `LV_STATE_FOCUSED` 表示对象处于焦点状态。可以将多个状态合并成一个状态,例如 `LV_STATE_FOCUSED | LV_STATE_PRESSED` 表示对象同时处于焦点和按下状态。
`lv_obj_clear_state` 函数用于从对象上清除指定状态。它也接受两个参数:一个是要清除状态的对象,另一个是要清除的状态。与 `lv_obj_add_state` 类似,可以将多个状态合并成一个状态进行清除。
这些函数可以用于动态地改变对象的状态,从而实现动态的图形界面效果。例如,可以在按钮被按下时将 `LV_STATE_PRESSED` 状态添加到按钮上,以改变按钮的外观。
lv_obj_update_layout(obj)
`lv_obj_update_layout` 是 LittlevGL 图形库中用于更新对象布局的函数。在 LittlevGL 中,每个对象都有一个布局,用于确定对象在父容器中的位置和大小。布局可以通过设置对象的大小、位置、边距等属性来控制。
调用 `lv_obj_update_layout` 函数可以强制重新计算对象的布局。这在以下情况下特别有用:
- 当对象的属性发生变化时,例如大小、位置、边距等。
- 当对象的父容器的大小发生变化时,例如容器被调整大小或者容器的子对象被添加或删除。
如果布局没有被更新,对象可能会显示在错误的位置或者大小不正确。因此,当对象属性或者父容器大小发生变化时,我们应该调用 `lv_obj_update_layout` 函数来确保对象的布局是正确的。
需要注意的是,`lv_obj_update_layout` 函数只会更新对象本身的布局,而不会更新其子对象的布局。如果需要更新子对象的布局,需要分别调用每个子对象的 `lv_obj_update_layout` 函数。
lv_obj_set_align(obj, align)
调用 `lv_obj_set_align` 函数可以设置对象在其父容器中的对齐方式。它接受两个参数:一个是要设置对齐方式的对象,另一个是对齐方式。对齐方式可以通过 `LV_ALIGN_` 宏来表示,例如 `LV_ALIGN_CENTER` 表示对象应该在父容器的中心位置对齐。其他可用的对齐方式包括左对齐、右对齐、顶部对齐、底部对齐等。
需要注意的是,对象的对齐方式是相对于其父容器而言的。因此,如果父容器的大小或者位置发生变化,对象的位置也会相应地发生变化。如果需要在对象的位置固定时使用绝对位置,可以使用 `lv_obj_set_pos` 函数来设置对象的位置。
要更改对齐方式并设置新坐标:
lv_obj_align(obj, align, x, y);
将子项与其父项的中心对齐: lv_obj_align(obj, LV_ALIGN_CENTER, 0, 0);如果父项的大小发生更改,则子项的设置对齐方式和位置将自动更新。
将对象与任意引用对象对齐: lv_obj_align_to(obj_to_align, reference_obj, align, x, y);如果对象的坐标或参照对象的坐标发生更改,则无法重新对齐对象。
lv_scr_act()
调用 lv_scr_act 函数可以返回当前活动的屏幕对象,即当前显示在屏幕上的顶级容器对象。通常情况下,应用程序只需要在当前活动屏幕对象上添加、删除或修改其他对象,而不需要直接创建新的屏幕对象。
需要注意的是,LittlevGL 中可以存在多个屏幕对象,但是只有一个屏幕对象可以处于活动状态。活动屏幕对象是当前接收用户输入事件的对象,并且是默认情况下所有新对象的父容器对象。如果需要更改活动屏幕对象,可以使用 lv_scr_load 函数将另一个屏幕对象加载到屏幕上。
lv_obj_add_style(btn, &style, LV_PART_MAIN);
调用 lv_obj_add_style
函数可以将指定的样式对象添加到对象上的指定部分,例如主要部分、文本部分等。该函数接受三个参数:一个是要添加样式的对象,一个是指向要添加的样式对象的指针,一个是要添加样式的部分。部分由 LV_PART_
宏表示,例如 LV_PART_MAIN
表示对象的主要部分,LV_PART_ITEMS
表示对象中的子项部分等等。
例如,可以使用 lv_btn_create 函数创建一个新的按钮对象,并使用 lv_obj_add_style 函数为该对象的主要部分添加样式:
lv_obj_t * btn = lv_btn_create(lv_scr_act(), NULL); // 创建一个新的按钮对象
lv_style_t style;
lv_style_init(&style); // 初始化样式对象
lv_style_set_bg_color(&style, LV_STATE_DEFAULT, LV_COLOR_RED); // 设置背景颜色为红色
lv_obj_add_style(btn, &style, LV_PART_MAIN); // 将样式对象添加到按钮对象的主要部分
在这个例子中,首先使用 lv_btn_create
函数创建一个新的按钮对象,并将其添加到当前活动屏幕对象上。然后,使用 lv_style_init
函数初始化一个新的样式对象,并使用 lv_style_set_bg_color
函数设置样式对象的背景颜色为红色。最后,使用 lv_obj_add_style
函数将样式对象添加到按钮对象的主要部分上,从而将按钮对象的背景颜色设置为红色。
lv_style_set_translate_y(&style_pressed, -20);
`lv_style_set_translate_y` 是 LittlevGL 图形库中用于设置样式对象垂直方向平移量的函数。在 LittlevGL 中,样式对象用于定义对象的外观和行为属性,例如颜色、边框、填充、字体、对齐方式等。通过设置样式对象的垂直方向平移量,可以在不改变对象大小和位置的情况下,将对象在垂直方向上平移一定的距离。
调用 `lv_style_set_translate_y` 函数可以设置垂直方向平移量,该函数接受两个参数:一个是指向要设置的样式对象的指针,一个是要设置的平移量。平移量可以是正数或负数,表示向上或向下平移的距离,单位为像素。
例如,可以使用 `lv_style_set_translate_y` 函数将样式对象的垂直方向平移量设置为 10 像素:
lv_style_t style;
lv_style_init(&style);
lv_style_set_translate_y(&style, 10);
在这个例子中,首先使用 `lv_style_init` 函数初始化一个新的样式对象,然后使用 `lv_style_set_translate_y` 函数将样式对象的垂直方向平移量设置为 10 像素。可以将样式对象应用于任何需要在垂直方向上平移的对象上,例如标签、按钮、图像等。
lv_anim_set_...()
`lv_anim_set_...()` 是 LittlevGL 图形库中用于设置动画属性的函数系列。在 LittlevGL 中,动画对象用于实现对象的平滑过渡和动态效果,例如渐变、旋转、平移等。通过设置动画对象的属性,可以控制动画的速度、延迟、循环次数和结束时的回调函数等。
`lv_anim_set_...()` 函数系列包括以下函数:
- `lv_anim_set_time(lv_anim_t * a, uint16_t time)`:设置动画的持续时间,单位为毫秒。
- `lv_anim_set_delay(lv_anim_t * a, uint16_t delay)`:设置动画的延迟时间,即从启动动画到实际开始执行动画的时间间隔,单位为毫秒。
- `lv_anim_set_playback_time(lv_anim_t * a, uint16_t playback_time)`:设置动画的回放时间,即动画结束后从结束状态回到起始状态的时间,单位为毫秒。
- `lv_anim_set_repeat_count(lv_anim_t * a, uint16_t repeat_count)`:设置动画的循环次数,即动画执行的次数。
- `lv_anim_set_repeat_delay(lv_anim_t * a, uint16_t repeat_delay)`:设置动画循环的延迟时间,即在每次循环开始前等待的时间,单位为毫秒。
- `lv_anim_set_exec_cb(lv_anim_t * a, lv_anim_exec_xcb_t exec_cb)`:设置动画执行的回调函数,该函数在动画执行过程中被调用,用于更新对象的状态。
- `lv_anim_set_path_cb(lv_anim_t * a, lv_anim_path_cb_t path_cb)`:设置动画路径的回调函数,该函数用于计算动画过程中对象的位置、大小和透明度等属性。
这些函数可以用于设置动画对象的各种属性,从而实现自定义的动画效果。例如,可以使用以下代码创建一个新的动画对象,并设置其执行时间、循环次数和执行回调函数:
static void anim_cb(lv_anim_t * a, lv_anim_value_t value)
{
lv_obj_set_x(a->var, value); // 更新对象的位置
}
lv_obj_t * obj = lv_obj_create(lv_scr_act(), NULL); // 创建一个新的对象
lv_anim_t anim;
lv_anim_init(&anim); // 初始化动画对象
lv_anim_set_var(&anim, obj); // 设置动画对象的目标对象
lv_anim_set_time(&anim, 1000); // 设置动画的持续时间为 1 秒
lv_anim_set_repeat_count(&anim, 5); // 设置动画的循环次数为 5 次
lv_anim_set_exec_cb(&anim, anim_cb); // 设置动画的执行回调函数为 anim_cb
lv_anim_start(&anim); // 启动动画
在这个例子中,首先使用 `lv_obj_create` 函数创建一个新的对象,并将其添加到当前活动屏幕对象上。然后,使用 `lv_anim_init` 函数初始化一个新的动画对象,并使用 `lv_anim_set_var` 函数设置动画对象的目标对象。接下来,使用 `lv_anim_set_time` 函数设置动画的持续时间为 1 秒,使用 `lv_anim_set_repeat_count` 函数设置动画的循环次数为 5 次,使用 `lv_anim_set_exec_cb` 函数设置动画的执行回调函数为 `anim_cb`。最后,使用 `lv_anim_start` 函数启动动画。在动画执行过程中,将调用 `anim_cb` 回调函数更新对象的位置,从而实现对象在 x 轴方向上的平移动画效果。
lv_timer_create(timer_cb, period_ms, user_data)
lv_timer_create
是 LittlevGL 图形库中用于创建定时器的函数。在 LittlevGL 中,定时器可以用于周期性地执行某个任务或回调函数,例如更新屏幕、检查输入事件等。可以使用 lv_timer_create
函数创建一个新的定时器,并设置其执行周期、回调函数和用户数据等属性。
lv_timer_create
函数接受三个参数:回调函数、周期时间和用户数据。其中,回调函数是定时器到达指定时间时要执行的函数,周期时间是定时器执行的时间间隔,单位为毫秒,用户数据是一个指向用户自定义数据的指针,可以在回调函数中使用。
例如,以下代码创建一个新的定时器,并设置其周期时间为 1000 毫秒,回调函数为 timer_cb
,用户数据为 NULL:
lv_timer_t * timer = lv_timer_create(timer_cb, 1000, NULL);
在这个例子中,timer_cb
是一个自定义的回调函数,用于在定时器到达指定时间时执行一些操作。1000
是周期时间,表示定时器每隔 1000 毫秒执行一次回调函数。NULL
是用户数据,表示在回调函数中不需要使用任何用户自定义数据。
创建定时器后,可以使用 lv_timer_set_repeat_count
函数设置定时器的重复次数,使用 lv_timer_set_pause
函数暂停或继续定时器的执行,使用 lv_timer_delete
函数删除定时器。
例如,以下代码设置定时器的重复次数为 5 次,然后启动定时器:
lv_timer_set_repeat_count(timer, 5); // 设置定时器的重复次数为 5 次
lv_timer_start(timer); // 启动定时器
在定时器执行过程中,将每隔 1000 毫秒调用 timer_cb
回调函数一次,直到达到指定的重复次数后停止。可以在回调函数中执行一些自定义的操作,例如更新屏幕、检查输入事件等。
style.set_bg_opa(lv.OPA.COVER)
该代码使用 style 对象的 set_bg_opa 方法将背景不透明度设置为 lv.OPA.COVER,即完全不透明,覆盖底层对象。
其中,style.set_bg_opa(opa) 方法用于设置样式对象的背景不透明度,其中 opa 参数表示背景不透明度的值,可以是以下几个预定义的常量之一:
lv.OPA.TRANSP:完全透明,即背景不可见。
lv.OPA.COVER:完全不透明,即背景完全覆盖底层对象。
lv.OPA._50:半透明,即背景透明度为 50%。
lv.OPA._75:背景透明度为 75%。
例如,以下代码将样式对象的背景不透明度设置为 lv.OPA.COVER
:
style = lv.style_t()
style.set_bg_opa(lv.OPA.COVER) # 将样式对象的背景不透明度设置为完全不透明,覆盖底层对象
在这个例子中,首先创建了一个新的样式对象 style。然后,使用 style.set_bg_opa(lv.OPA.COVER) 方法将样式对象的背景不透明度设置为 lv.OPA.COVER,即完全不透明,覆盖底层对象。
style.set_bg_grad_color(lv.palette_darken(lv.PALETTE.BLUE, 2))
这段代码是 LittlevGL 中用于设置样式对象背景渐变颜色的代码。具体来说,该代码使用 `style` 对象的 `set_bg_grad_color` 方法将背景渐变色设置为 `lv.palette_darken(lv.PALETTE.BLUE, 2)`,即将预定义的蓝色调色板颜色加深两个色阶后作为渐变色。
其中,`style.set_bg_grad_color(color)` 方法用于设置样式对象的背景渐变颜色,其中 `color` 参数表示渐变颜色的值,可以是以下几种形式之一:
- RGB 颜色值,如 `lv.color_hex(0xFF0000)` 表示红色。
- 预定义的调色板颜色,如 `lv.PALETTE.BLUE` 表示蓝色。
- 渐变色对象,如 `lv.gradient_t()` 表示一个新的渐变色对象。
在这个例子中,`lv.palette_darken(lv.PALETTE.BLUE, 2)` 函数将预定义的蓝色调色板颜色加深两个色阶,得到一个较暗的蓝色,并将其作为渐变颜色。因此,该代码将样式对象的背景渐变颜色设置为一个从较暗的蓝色渐变到透明的渐变色。
例如,以下代码创建了一个新的样式对象,并将其背景渐变颜色设置为一个从较暗的蓝色渐变到透明的渐变色:
style = lv.style_t()
style.set_bg_grad_color(lv.palette_darken(lv.PALETTE.BLUE, 2)) # 将样式对象的背景渐变颜色设置为从较暗的蓝色渐变到透明的渐变色
在这个例子中,首先创建了一个新的样式对象 `style`。然后,使用 `lv.palette_darken(lv.PALETTE.BLUE, 2)` 函数将预定义的蓝色调色板颜色加深两个色阶,得到一个较暗的蓝色,并将其作为渐变颜色。最后,使用 `style.set_bg_grad_color` 方法将样式对象的背景渐变颜色设置为该渐变色。
style.set_bg_grad_dir(lv.GRAD_DIR.VER)
这段代码是 LittlevGL 中用于设置样式对象背景渐变方向的代码。具体来说,该代码使用 `style` 对象的 `set_bg_grad_dir` 方法将背景渐变色的方向设置为 `lv.GRAD_DIR.VER`,即垂直方向。
其中,`style.set_bg_grad_dir(dir)` 方法用于设置样式对象的背景渐变方向,其中 `dir` 参数表示渐变方向的值,可以是以下几个预定义的常量之一:
- `lv.GRAD_DIR.NONE`:不使用渐变色。
- `lv.GRAD_DIR.HOR`:水平方向。
- `lv.GRAD_DIR.VER`:垂直方向。
- `lv.GRAD_DIR.VER_INV`:垂直方向,反向渐变。
- `lv.GRAD_DIR.HOR_INV`:水平方向,反向渐变。
- `lv.GRAD_DIR.DIAG`:对角线方向。
- `lv.GRAD_DIR.DIAG_INV`:对角线方向,反向渐变。
例如,以下代码创建了一个新的样式对象,并将其背景渐变方向设置为垂直方向:
style = lv.style_t()
style.set_bg_grad_dir(lv.GRAD_DIR.VER) # 将样式对象的背景渐变方向设置为垂直方向
在这个例子中,首先创建了一个新的样式对象 `style`。然后,使用 `style.set_bg_grad_dir(lv.GRAD_DIR.VER)` 方法将样式对象的背景渐变方向设置为垂直方向。
style.set_pad_all(10)
该代码使用 style
对象的 set_pad_all
方法将四个方向的内边距都设置为 10
,即上、下、左、右四个方向的内边距都为 10
。
其中,style.set_pad_all(pad)
方法用于设置样式对象四个方向的内边距,其中 pad
参数表示内边距的值,以像素为单位。
lv.style_transition_dsc_t()
`lv.style_transition_dsc_t()` 是 LittlevGL 中用于创建样式过渡动画描述符的函数。样式过渡动画描述符用于指定样式对象在过渡时的动画效果和时长。
样式过渡动画描述符是一个结构体,包含以下字段:
- `obj`:指向要进行过渡动画的对象。
- `time`:过渡动画的时长,以毫秒为单位。
- `delay`:过渡动画的延迟时间,以毫秒为单位。
- `playback`:过渡动画的播放方式,可以是以下几种之一:
- `lv.PLAYBACK_FORWARD`:正向播放动画。
- `lv.PLAYBACK_BACKWARD`:反向播放动画。
- `lv.PLAYBACK_LOOP_FORWARD`:正向循环播放动画。
- `lv.PLAYBACK_LOOP_BACKWARD`:反向循环播放动画。
- `lv.PLAYBACK_BOUNCE_FORWARD`:正向回弹播放动画。
- `lv.PLAYBACK_BOUNCE_BACKWARD`:反向回弹播放动画。
- `path`:过渡动画的曲线路径,可以是以下几种之一:
- `lv.PATH_NONE`:不使用曲线路径。
- `lv.PATH_LINEAR`:线性曲线路径。
- `lv.PATH_EASE_IN`:加速曲线路径。
- `lv.PATH_EASE_OUT`:减速曲线路径。
- `lv.PATH_EASE_IN_OUT`:先加速后减速曲线路径。
- `start`:起始样式对象。
- `end`:目标样式对象。
例如,以下代码创建了一个样式过渡动画描述符,并设置其中的各个字段:
trans = lv.style_transition_dsc_t()
trans.obj = obj # 指定要进行过渡动画的对象
trans.time = 500 # 设置过渡动画的时长为 500ms
trans.delay = 200 # 设置过渡动画的延迟时间为 200ms
trans.playback = lv.PLAYBACK_FORWARD # 设置过渡动画的播放方式为正向播放
trans.path = lv.PATH_EASE_IN_OUT # 设置过渡动画的曲线路径为先加速后减速曲线
trans.start = start_style # 设置起始样式对象
trans.end = end_style # 设置目标样式对象
在这个例子中,首先创建了一个样式过渡动画描述符 `trans`。然后,使用 `trans.obj` 字段指定要进行过渡动画的对象,使用 `trans.time` 字段设置过渡动画的时长为 `500` 毫秒,使用 `trans.delay` 字段设置过渡动画的延迟时间为 `200` 毫秒,使用 `trans.playback` 字段设置过渡动画的播放方式为正向播放,使用 `trans.path` 字段设置过渡动画的曲线路径为先加速后减速曲线,使用 `trans.start` 字段设置起始样式对象,使用 `trans.end` 字段设置目标样式对象。