Android

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

我的收藏

功能概览

通过贴纸与文字操作的接口类和方法,包括创建、加载、移除贴纸,以及设置贴纸属性如时间区间、动画模式、位置等。本文还提供了使用示例和贴纸数据模型的说明。

贴纸与文字

相关接口类

接口类名
描述
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 与克隆

// 获取贴纸唯一ID
int stickerId = textSticker.getId();

// 克隆贴纸(浅拷贝)
TAVSticker clonedSticker = textSticker.clone();

// 克隆贴纸(深拷贝)
TAVSticker deepClonedSticker = textSticker.clone(true);