短视频 SDK Android(草稿箱)

通过草稿箱相关接口,可以实现在短视频编辑过程中撤销和重做,以及导出到草稿箱供下次继续编辑。TAVDraftManager 提供草稿管理功能,包括设置保存目录、读取/删除草稿、生成/加载草稿、撤销/重做操作。

相关产品
短视频 SDK 产品页,含版本规格、价格与购买入口。

二、相关接口类

接口类名 描述
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 String generateDraft(String thumbPath);

八、加载草稿

/** * 加载指定草稿 * @param draft 要加载的草稿对象 * @param callback 加载结果回调 */public abstract void loadDraft(TAVDraft draft, DraftLoadingCallback callback);

九、获取当前草稿

/** * 获取当前编辑器对应的草稿对象 * @return 当前草稿对象 */public abstract TAVDraft getCurrentDraft();

十一、提交记录点

/** * 提交当前编辑状态 * @param tag 标记值 * @return 本次提交是否生效 */public abstract boolean commit(String tag);

十二、获取已提交的标记

/** * 获取当前撤销栈中已提交的标记列表 * @return 标记列表,按提交顺序排列 */public abstract List<String> getCommitTags();

十三、重置草稿记录

/** * 清空当前草稿的撤销/重做记录 * 通常在加载新草稿或重新开始编辑时调用 */public abstract void resetDraftRecord();

十四、状态检查

/** * 检查是否可撤销 * @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);}

20、操作回调

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 未知错误。

22、组件观察者

public interface DraftComponentObserver { /** * 组件更新回调 * @param component 更新的草稿组件 */ void onComponentUpdate(TAVDraftComponent component);}

23、使用示例

// 设置草稿保存目录TAVDraftManager.setDraftStorageDir(context.getFilesDir() + "/drafts/");// 读取草稿列表List<TAVDraft> drafts = TAVDraftManager.readDraftList();// 加载草稿editor.getDraftManager().loadDraft(drafts.get(0), new DraftLoadingCallback() { @Override public void onDraftLoadingFinished(DraftLoadingResult result) { if (result.isSuccess()) { // 加载完成后重置草稿记录,使提交栈以当前内容为起点 // 首次加载时尚无提交记录,直接 commit 会抛出异常 editor.getDraftManager().resetDraftRecord(); boolean committed = editor.getDraftManager().commit("auto_save"); } else { // 处理错误 } }});// 设置状态监听editor.getDraftManager().setDraftStateListener(new DraftStateListener() { @Override public void onUndoStateChange(boolean canUndo) { // 更新UI撤销按钮状态 } @Override public void onRedoStateChange(boolean canRedo) { // 更新UI重做按钮状态 }});

赞 (0)
上一篇 4天前
下一篇 4天前