ezipa控件¶
1. 使用场景¶
本控件基于lvsf_ezipa组件实现APNG(动态PNG)格式图片的解析、播放、控制等功能,适用于需要带透明度图片组成的序列帧动画。
注意:
lv_ezipa_*接口不在solution/framework/gui_widget目录下定义,当前实现位于sdk/middleware/lvgl/lvsf/lvsf_ezipa.h。因此该控件属于UI控件文档中的APNG/eZIPA播放能力说明,但不是solution/framework/gui_widget目录内的组件。
2. 接口介绍¶
2.1 核心数据结构(关键说明)¶
结构体/枚举 |
说明 |
|---|---|
lv_ezipa_status_t |
APNG播放状态枚举,包含 |
|
|
lv_ezipa_end_cb_t |
播放结束回调函数类型,原型为 |
2.2 核心接口列表¶
接口函数 |
功能说明 |
参数说明 |
|---|---|---|
|
创建 APNG 播放控件 |
|
|
设置 APNG 文件源路径 |
|
|
设置 APNG 播放背景层 |
|
|
暂停 APNG 播放 |
|
|
恢复 APNG 播放 |
|
|
延迟恢复播放 |
|
|
设置播放循环次数 |
|
|
设置播放结束回调 |
|
|
强制设置帧播放间隔 |
|
|
设置 APNG 缩放比例 |
|
|
设置 APNG 透明度 |
|
3. 使用案例¶
3.1 基础使用示例¶
static lv_obj_t* p_apng = NULL;
static void apng_play_end_cb(lv_obj_t* ezipa)
{
rt_kprintf("play end.\n");
}
static void on_start(void)
{
p_apng = lv_ezipa_create(lv_scr_act());
lv_ezipa_set_src(p_apng, APP_GET_IMG(apng));
lv_ezipa_set_surface(p_apng, APP_GET_IMG(apng_thum));
lv_ezipa_set_interval(p_apng, 50);
//默认为循环模式,只有设置非循环模式下设置回调函数才有效被调用
//lv_ezipa_set_loop_times(p_apng, 0);
//lv_ezipa_set_play_end_cb(p_apng, apng_play_end_cb);
lv_obj_center(p_apng);
}
static void on_resume(void)
{
lv_ezipa_resume(p_apng);
}
static void on_pause(void)
{
lv_ezipa_pause(p_apng);
}
static void on_stop(void)
{
p_apng = NULL;
}
3.3 案例效果展示¶
4. 注意事项¶
图片后缀:序列帧图片合成后的apng文件后缀为png。
循环次数规则:
loop_times = -1:无限循环播放,默认为循环模式;loop_times = 0:播放1次后停止;loop_times > 0:按设定次数循环播放。
回调函数注意:只有当循环次数设置为非循环模式时,才会被调用,否则不会调用。