LVGL设置文本标签滚动(LVGLv8.2)
·
正常情况下使用lv_label_set_long_mode函数并设置长文本模式(long mode)为可以LONG_SCROLL_CIRCULAR可以使字幕滚动。
例如:
lv_obj_t *label = lv_label_create(lv_scr_act());
lv_label_set_text(label,"1145141919810!!!");
lv_label_set_long_mode(label,LV_LABEL_LONG_SCROLL_CIRCULAR);
以上为在stm32f103环境下运行的效果图
如果要改变速度,在其他版本的lvgl可以使用lv_label_set_anim_speed来实现,但在8.2版本中没有这个函数,可以用lv_obj_set_style_anim_speed来实现
lv_obj_set_style_anim_speed(label,speed_zm,0);
加入函数,其中speed_zm为滚动速度,值越大,滚动越快。
当speed_zm为500时
那么问题来了,默认的滚动方式是向左滚动,那么向右滚动怎么设置呢?
首先跳转到lv_label_set_long_mode的函数定义
可看到字幕的滚动动画是由lv_label_refr_text这个刷新函数实现的,所以我们究其根源,再跳转过去
我们找到 if 分支语句下,在LONG_SCROLL_CIRCULAR这个模式下的语句,发现动画实现其实还是用anim实现的,所以我们找到lv_anim_set_values 这个函数
lv_anim_set_values(lv_anim_t * a, int32_t start, int32_t end);
第二个参数是起始位置,第三个是结束位置,所以如果改变方向只要左右反一下就行了
lv_anim_set_values(&a, 0,-size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT);
左滚动
lv_anim_set_values(&a,-size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT,0);
右滚动
左右滚动效果。
更多推荐
已为社区贡献3条内容
所有评论(0)