-
Notifications
You must be signed in to change notification settings - Fork 53
TextSticker
zanxiaofei edited this page Aug 25, 2017
·
4 revisions
金山云短视频SDK提供字幕功能,支持在编辑部分添加字幕,并最终生合成到视频中 字幕提供旋转、缩放、移动位置等功能
- KSYTextView字幕预览控件,提供字幕的预览、添加、删除功能 (SDK内部提供)
- StickerHelpBoxInfo字幕辅助区域的画笔,用于提供字幕辅助区域的删除、旋转按钮及辅助区域绘制Paint (SDK内部提供)
- DrawTextParams 字幕信息数据类,包含字幕背景,字幕画笔,字幕内容等(SDK内部提供)
- StickerAdapter字幕背景列表适配器 (Demo示例)
- ColorPicker 字幕颜色选择器(Demo示例)
- 添加预览字幕view
在编辑预览的xml中添加KSYStickerView控件来进行贴纸的预览,并需要将该对象设置给SDK内部
//xml中添加控件
<com.ksyun.media.shortvideo.view.KSYTextView
android:id="@+id/text_panel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:visibility="gone"/>
//获取控件实例
mTextView = (KSYStickerView) findViewById(R.id.text_panel);
- 字幕view设置给SDK
mEditKit.addTextStickerView(mTextView);
- 添加字幕
- KSYStickerView#setTextRectSelected(KSYTextView.OnTextRectSelected selected):提供选择字幕区域回调
- KSYStickerView#setEditText(EditText):设置字幕内容输入控件
- DrawTextParams:字幕内容信息,包含字幕背景,字幕画笔,字幕内容等
- KSYStickerView#addTextSticker(DrawTextParams params, StickerHelpBoxInfo helpBoxInfo):添加字幕(可通过该接口添加多个字幕)
//init begin
//初始化,mTextInput为字幕文字的输入框控件
mTextView.setEditText(mTextInput);
//点击字幕区域回调
mTextView.setTextRectSelected(mTextRectSelected);
//字幕颜色选择器
mColorPicker = new ColorPicker(this, 255, 255, 255);
mTextColorSelect.setOnClickListener(mButtonObserver);
//init done
//字幕画笔信息
DrawTextParams textParams = new DrawTextParams();
textParams.textPaint = new TextPaint();
textParams.textPaint.setTextSize(mTextView.getTextSize()); //字体大小
textParams.textPaint.setColor(Color.WHITE); //字体颜色
textParams.textPaint.setTextAlign(Paint.Align.LEFT); //文字对齐方式
textParams.textPaint.setStyle(Paint.Style.FILL); //文字样式
textParams.textPaint.setAntiAlias(true); //抗锯齿
textParams.autoNewLine = false; //是否自动换行
textParams.bitmap = null; //字幕背景图
textParams.text = mTextInput.getText().toString().trim(); //字幕内容
//添加字幕
mTextView.addTextSticker(textParams, mStickerHelpBoxInfo);
- 变更字幕内容
- KSYStickerView#setCurrentText(String):设置当前选中字幕的内容
private TextWatcher mTextInputChangedListener = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
String text = editable.toString().trim();
//输入字幕内容
mTextView.setCurrentText(text);
}
};
-
删除字幕
在辅助区域点击关闭按钮,即可删除某一字幕 -
修改字幕颜色
- KSYStickerView#setCurrentTextColor(int):修改当前字幕颜色
private void changeTextColor(int newColor) {
mTextColorSelect.setBackgroundColor(newColor);
mTextView.setCurrentTextColor(newColor);
}
- 更新字幕信息
- KSYStickerView#updateTextParams(DrawTextParams):可用于更新当前字幕的信息
DrawTextParams textParams = new DrawTextParams();
textParams.textPaint = null; //使用默认或者之前设置的画笔
textParams.autoNewLine = false;
if (path.contains("5")) {
textParams.text_left_padding = 0.276f; //设置字幕可写区域相对背景左边的距离
textParams.text_right_padding = 0.271f; //设置字幕可写区域相对背景右边的距离
textParams.text_top_padding = 0.265f; //设置字幕可写区域相对背景上边的距离
textParams.text_bottom_padding = 0.245f;//设置字幕可写区域相对背景下边的距离
}
textParams.bitmap = getImageFromAssetsFile(path); //为null,默认使用初始添加时的背景
mTextView.updateTextParams(textParams);