用一个label控件随便显示一些字(用矢量字库),然后用anim动画动态设置lable位置
用一个label控件随便显示一些字(用矢量字库),然后用anim动画动态设置lable位置
全体保证ttf文件要有效!!!有些ttf文件在歌词控件上可以用,但是在这里不能用请注意!
static void anim_x_cb(void * var, int32_t v) {lv_obj_set_x((lv_obj_t *)var, v);
}
static void my_fun_2590(void){printf("进入my fun 2590\n");// 分配 RAM 并拷贝字体lv_ft_info_t info = {0};info.name = "storage/sd0/C/sub1.ttf";info.weight = 64; // 字号info.style = FT_FONT_STYLE_NORMAL; // 样式,可选FILE *fp = fopen("storage/sd0/C/sub1.ttf", "rb");if(!fp) {printf("❌ 字体文件不存在或无法打开\n");return;} else {printf("✅ 字体文件能打开\n");fclose(fp);}// 初始化 FreeType 字体if(lv_ft_font_init(&info) != LV_RES_OK) {printf("字体初始化失败\n");return;}printf("lv_ft_font_init end\n");// info.font 就是生成的 lv_font_t 指针printf("info.font = %p\n", info.font);lv_obj_t * label = lv_label_create(lv_scr_act());lv_label_set_text(label, "测试文本ABC123");lv_obj_set_style_text_font(label, info.font, 0);lv_obj_set_pos(label, 10, 10);lv_anim_t a;lv_anim_init(&a);lv_anim_set_var(&a, label);lv_anim_set_exec_cb(&a, anim_x_cb);lv_anim_set_values(&a, 0, 200);lv_anim_set_time(&a, 1000);lv_anim_set_playback_time(&a, 1000);lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);lv_anim_start(&a);
}
int main(){while (storage_device_ready() != true) os_time_dly(3);lv_timer_t *t3 = lv_timer_create(my_fun_2590, 1000, NULL);lv_timer_set_repeat_count(t3, 1); // 只执行1次
}