一.问题背景
笔者最近在学习LVGL框架,同时准备使用该框架作为课程设计的一部分,于是需要从静态显示进阶到动态显示以及事件交互。一方面由于笔者是初次接触LVGL,对它并不熟悉,另一方面由于其网络上的针对性具体资料太少,所以学习效率很低。
由于上一篇文章笔者完成了很基础的静态界面设计和移植。于是此次便向原有工程上先进行试验,先将原有文本改成可以动态变化的文本。
二.失败方案
笔者一开始选择使用设置Label属性中的setText函数对文本进行设置,在主函数中加入这个函数以为能够修改文本值:
lv_label_set_text(guider_ui.screen_label_1, "6");

生成字体,拷贝到项目的guider_customer_fonts中,
在文件中引入全局声明
LV_FONT_DECLARE(lv_customer_font_AlibabaPuHuiTi_3_55Regular_15);
调用如下方法修改中文字体
static char label_text[64];
void safe_update_label(lv_obj_t *label, const char *format, ...) {
va_list args;
va_start(args, format);
vsnprintf(label_text, sizeof(label_text), format, args);
va_end(args);
lv_obj_set_style_text_font(label, &lv_customer_font_AlibabaPuHuiTi_3_55Regular_16, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_label_set_text(label, label_text);
}