功能概览
通过草稿箱相关接口,可以实现在短视频编辑过程中撤销和重做,以及导出到草稿箱供下次继续编辑。
TAVDraftManager 提供草稿管理功能,包括设置保存目录、读取/删除草稿、生成/加载草稿、撤销/重做操作。
相关接口类
接口类名 | 描述 |
TAVDraftManager | 草稿箱操作管理类。 |
相关方法
设置草稿保存目录
/*** 设置草稿保存的目录* @param storageDir 保存目录路径*/public static void setDraftStorageDir(String storageDir);
读取草稿列表
/*** 读取草稿保存目录下所有的草稿* @return 按时间倒序排列的草稿列表*/public static List<TAVDraft> readDraftList();
删除草稿
/*** 删除指定草稿* @param draft 要删除的草稿对象* @return 是否删除成功*/public static boolean deleteDraft(TAVDraft draft);/*** 删除所有草稿* @return 是否删除成功*/public static boolean deleteAllDrafts();
生成草稿
/*** 保存当前编辑状态为草稿* @param consumer 接收草稿保存路径的回调*/public abstract void generateDraft(TAVConsumer<String> consumer);
加载草稿
/*** 加载指定草稿* @param draft 要加载的草稿对象* @param callback 加载结果回调*/public abstract void loadDraft(TAVDraft draft, DraftLoadingCallback callback);
撤销/重做操作
提交记录点
/*** 提交当前编辑状态* @param tag 标记值* @return 本次提交是否生效*/public abstract boolean commit(String tag);
状态检查
/*** 检查是否可撤销* @return 是否可撤销*/public abstract boolean canUndo();/*** 检查是否可重做* @return 是否可重做*/public abstract boolean canRedo();
执行操作
/*** 执行撤销操作* @param callback 操作结果回调*/public abstract void undo(DraftActionCallback callback);/*** 执行重做操作* @param callback 操作结果回调*/public abstract void redo(DraftActionCallback callback);
状态监听
设置状态监听器
/*** 设置草稿状态监听* @param listener 状态监听器*/public abstract void setDraftStateListener(DraftStateListener listener);
设置组件变更监听
/*** 设置草稿组件变更监听* @param observer 组件观察者*/public abstract void setDraftComponentObserver(DraftComponentObserver observer);
草稿状态监听器
public interface DraftStateListener {/*** 可撤销状态变更* @param canUndo 是否可撤销*/void onUndoStateChange(boolean canUndo);/*** 可重做状态变更* @param canRedo 是否可重做*/void onRedoStateChange(boolean canRedo);}
操作回调
public interface DraftActionCallback {/*** 操作完成回调* @param tag 提交时的标记值* @param diffResult 变更结果*/void onCheckoutDraft(String tag, TAVDiffResult diffResult);/*** 操作失败回调* @param errorCode 错误代码*/void onError(int errorCode);}
errorCode 错误代码:
错误代码 | 常量名 | 描述 |
1 | ERROR_NOT_COMMITTED | 草稿未提交。 |
100 | ERROR_SDK_INTERNAL | SDK 内部错误。 |
101 | ERROR_RESOURCE_NOT_FOUND | 资源不存在。 |
102 | ERROR_RESOURCE_INVALID | 资源格式错误。 |
-1 | ERROR_UNKNOWN | 未知错误。 |
回调接口
组件观察者
public interface DraftComponentObserver {/*** 组件更新回调* @param component 更新的草稿组件*/void onComponentUpdate(TAVDraftComponent component);}
使用示例
// 设置草稿保存目录TAVDraftManager.setDraftStorageDir("/sdcard/drafts/");// 读取草稿列表List<TAVDraft> drafts = TAVDraftManager.readDraftList();// 加载草稿tavEditor.getDraftManager().loadDraft(drafts.get(0), new DraftLoadingCallback() {@Overridepublic void onDraftLoadingFinished(DraftLoadingResult result) {if (result.isSuccess()) {// 加载成功} else {// 处理错误}}});// 提交当前状态boolean committed = tavEditor.getDraftManager().commit("auto_save");// 设置状态监听tavEditor.getDraftManager().setDraftStateListener(new DraftStateListener() {@Overridepublic void onUndoStateChange(boolean canUndo) {// 更新UI撤销按钮状态}@Overridepublic void onRedoStateChange(boolean canRedo) {// 更新UI重做按钮状态}});