功能概览
通过贴纸与文字操作的接口类和方法,包括创建、加载、移除贴纸,以及设置贴纸属性如时间区间、动画模式、位置等。本文还提供了使用示例和贴纸数据模型的说明。
贴纸与文字
相关接口类
接口类名 | 描述 |
TAVEditor | SDK 操作入口类。 |
ITAVStickerManager | 贴纸操作接口类。 |
TAVSticker | 贴纸数据模型类。 |
接口方法汇总
方法 | 参数 | 返回值 | 说明 |
createSticker(TAVStickerType type, String stickerPath) | type:贴纸类型。stickerPath:文件路径。 | TAVSticker | 创建贴纸对象。 |
loadSticker(TAVSticker sticker) | sticker:贴纸对象。 | void | 加载贴纸。 |
removeSticker(TAVSticker sticker) | sticker:贴纸对象。 | void | 移除贴纸。 |
registerFallbackFont(String fontPath) | fontPath:字体路径。 | boolean | 注册保底字体。 |
getStickers() | - | List<TAVSticker> | 获取所有贴纸。 |
getSticker(int id) | id:贴纸 ID。 | TAVSticker | 获取指定贴纸。 |
addStickerObserver(ITAVStickerContextObserver observer) | observer:观察者。 | void | 添加贴纸状态监听。 |
removeStickerObserver(ITAVStickerContextObserver observer) | observer:观察者。 | void | 移除贴纸状态监听。 |
贴纸操作相关方法
获取贴纸操作接口
/*** 获取贴纸操作接口** @return ITAVStickerManager实例*/ITAVStickerManager manager = editor.getStickerManager();
创建贴纸对象
/*** 创建贴纸对象** @param type 贴纸类型(MOTION=动效贴纸, TEXT=文字贴纸, IMAGE=自定义图片贴纸)* @param path 贴纸文件路径* @return TAVSticker实例*/TAVSticker sticker = manager.createSticker(type, path);if (sticker != null) {// 设置显示时间区间(微秒)sticker.setTimeRange(TAVTimeRange.fromUs(0, durationUs));// 设置动画模式(可选)sticker.setAnimationMode(TAVSticker.TAVStickerAnimationMode.FREEZE);}
加载贴纸
/*** 加载贴纸到编辑器** @param sticker 贴纸数据对象*/manager.loadSticker(sticker);
移除贴纸
/*** 移除贴纸** @param sticker 要移除的贴纸对象*/manager.removeSticker(sticker);
注册保底字体
/*** 注册保底字体** @param fontPath 字体文件路径* @return 注册是否成功*/boolean success = manager.registerFallbackFont("/sdcard/custom_font.ttf");if (success) {Log.i(TAG, "字体注册成功");}
贴纸列表操作
/*** 获取所有贴纸** @return 当前加载的贴纸列表*/List<TAVSticker> allStickers = manager.getStickers();/*** 通过ID获取贴纸** @param id 贴纸ID* @return 对应的贴纸对象*/TAVSticker specificSticker = manager.getSticker(stickerId);
贴纸数据模型(TAVSticker)
贴纸类型
public enum TAVStickerType {MOTION(0), // 动效贴纸TEXT(1), // 文字贴纸IMAGE(2); // 图片贴纸}
动画模式
public enum TAVStickerAnimationMode {DEFAULT, // 循环播放FREEZE, // 播放到最后一帧静止SCALE_UP // 慢速播放(当用户设定时长大于贴纸时长时)}
常用方法
// 设置显示时间区间(微秒)sticker.setTimeRange(TAVTimeRange.fromUs(startUs, endUs));// 设置动画模式sticker.setAnimationMode(TAVSticker.TAVStickerAnimationMode.FREEZE);// 设置可见性sticker.setVisible(true);// 设置位置(相对坐标,0-1)sticker.setPosition(0.5f, 0.5f);// 设置缩放比例sticker.setScale(1.2f);// 设置旋转角度(度数)sticker.setRotate(45);
使用示例
// 获取贴纸操作接口ITAVStickerManager stickerManager = editor.getStickerManager();// 注册保底字体stickerManager.registerFallbackFont("/sdcard/custom_font.ttf");// 创建动效贴纸TAVSticker motionSticker = stickerManager.createSticker(TAVSticker.TAVStickerType.MOTION,"/sdcard/stickers/motion.sticker");if (motionSticker != null) {motionSticker.setTimeRange(TAVTimeRange.fromUs(0, 5_000_000)); // 0-5秒motionSticker.setAnimationMode(TAVSticker.TAVStickerAnimationMode.SCALE_UP);// 加载贴纸stickerManager.loadSticker(motionSticker);}// 创建文字贴纸TAVSticker textSticker = stickerManager.createSticker(TAVSticker.TAVStickerType.TEXT,"/sdcard/stickers/text_template.sticker");if (textSticker != null) {textSticker.setTimeRange(TAVTimeRange.fromUs(2_000_000, 8_000_000)); // 2-8秒// 修改文字内容textSticker.getTextItem().setText("Hello World");// 修改文字样式textSticker.getTextItem().setTextColor(Color.RED);textSticker.getTextItem().setStrokeColor(Color.BLACK);textSticker.getTextItem().setStrokeWidth(1.5f);// 加载文字贴纸stickerManager.loadSticker(textSticker);}// 更新已有文字贴纸TAVSticker sticker = stickerManager.getSticker(stickerId);// 更新播放区间sticker.setTimeRange(timeRange);TAVStickerTextItem textItem = sticker.getTextItem().clone();// 更新文字内容/背景色/文字颜色/textItem.setText(text);textItem.setBackgroundColor(color);textItem.setTextColor(color);// 让更新内容生效sticker.setTextItem(textItem);// 获取所有贴纸List<TAVSticker> allStickers = stickerManager.getStickers();Log.d(TAG, "当前贴纸数量: " + allStickers.size());// 设置贴纸位置for (TAVSticker sticker : allStickers) {sticker.setPosition(0.3f, 0.7f);sticker.setScale(0.8f);}// 移除贴纸stickerManager.removeSticker(motionSticker);
贴纸 ID 与克隆
// 获取贴纸唯一IDint stickerId = textSticker.getId();// 克隆贴纸(浅拷贝)TAVSticker clonedSticker = textSticker.clone();// 克隆贴纸(深拷贝)TAVSticker deepClonedSticker = textSticker.clone(true);