Android

最近更新时间:2025-12-23 16:43:42

我的收藏

功能概览

通过草稿箱相关接口,可以实现在短视频编辑过程中撤销和重做,以及导出到草稿箱供下次继续编辑。
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() {
@Override
public void onDraftLoadingFinished(DraftLoadingResult result) {
if (result.isSuccess()) {
// 加载成功
} else {
// 处理错误
}
}
});

// 提交当前状态
boolean committed = tavEditor.getDraftManager().commit("auto_save");

// 设置状态监听
tavEditor.getDraftManager().setDraftStateListener(new DraftStateListener() {
@Override
public void onUndoStateChange(boolean canUndo) {
// 更新UI撤销按钮状态
}

@Override
public void onRedoStateChange(boolean canRedo) {
// 更新UI重做按钮状态
}
});