更新时间 : 2021-08-02 10:16:14
SXConfigUtils
类的构造函数,并传入模板根目录下的config.json的字符串内容作为参数构建一个SXConfigUtils
实例对象。SXConfigUtils
实例的getRelatedAssetForFile
,获得List<SXTemplateAsset>
, 遍历List调用SXTemplateAsset
实例的getReplaceType
方法获得素材类型,如果素材类型为SX_REPLACE_TYPE_TEXT
或SX_REPLACE_TYPE_POWER_TEXT
, 即为带字幕的素材,调用SXTemplateAsset
实例的getAsstJson
方法即可得到默认素材字幕的json字符串,在json字符串中找到ui
字段对应值,如在ui
下面找到default
字段的值即为该字幕默认的值,代表该字幕可以被替换。SXTemplate
实例的setReplaceableJson
方法,并传入上一步构建的json字符串作为参数替换素材中的字幕。
String jsonContent ="";//模板根目录下的config.json的字符串内容
String[] paths = ;//待替换的素材路径
SXConfigUtils utils = new SXConfigUtils(jsonContent);
JSONArray replaceJsonArray = new JSONArray(); //setReplaceableJson需要传入的是一个JsonArray对象
for(int i = 0; i < paths.length; i++) {
JSONObject replaceJson = new JSONObject();
replaceJson.put("main_file", paths[i]); //将每一个待替换素材路径装入main_file字段下
JsonArray replaceArray = new JSONArray(); //创建可替换素材的JsonArray
List<SXTemplateAsset> list = utils.getRelatedAssetForFile(i);//根据待替换的素材index构建需要替换的素材对象列表
for (SXTemplateAsset sxTemplateAsset : list) {
if (sxTemplateAsset.getReplaceType() == SX_REPLACE_TYPE_TEXT || sxTemplateAsset.getReplaceType() == SX_REPLACE_TYPE_POWER_TEXT) {
JSONObject assetJson = new JSONObject(sxTemplateAsset.getAsstJson());
if (assetJson.has("ui")) {
JSONObject uiJson = new JSONObject(assetJson.getString("ui"));
if (uiJson.has("default")) {
JSONObject subtitleJson = new JSONObject(); //创建可替换字幕的Json
subtitleJson.put("type", sxTemplateAsset.getReplaceType()); //设置类型
JSONObject attrJson = new JSONObject();
attrJson.put("text", "需要修改的字幕"); //往attr json中装入需要修改的字幕字符串
subtitleJson.put("attr", attrJson);
replaceArray.put(subtitleJson); //往可替换素材JsonArray中添加字幕json
}
}
}
}
replaceJson.put("replaces", replaceArray);
replaceJsonArray.put(replaceJson);
}
sxTemplate.setReplaceableJson(jsonArray.toString());//把新构建的JsonArray对象传入模板
SXConfigUtils
类的构造函数,并传入模板根目录下的config.json的字符串内容作为参数构建一个SXConfigUtils
实例对象。SXConfigUtils
实例的getRelatedAssetForFile
,获得List<SXTemplateAsset>
, 遍历List调用SXTemplateAsset
实例的getReplaceType
方法获得素材类型,如果素材类型为SX_REPLACE_TYPE_TEXT
或SX_REPLACE_TYPE_POWER_TEXT
, 即为带字幕的素材,调用SXTemplateAsset
实例的getAsstJson
方法即可得到默认素材字幕的json字符串,在json字符串中找到ui
字段对应值,如在ui
下面找到default
字段的值即为该字幕默认的值,代表该字幕可以被替换。SXTemplate
实例的setReplaceableJson
方法,并传入上一步构建的json字符串作为参数替换素材中的字幕。
String jsonContent ="";//模板根目录下的config.json的字符串内容
String[] paths = ;//待替换的素材路径
SXConfigUtils utils = new SXConfigUtils(jsonContent);
JSONArray replaceJsonArray = new JSONArray(); //setReplaceableJson需要传入的是一个JsonArray对象
for(int i = 0; i < paths.length; i++) {
JSONObject replaceJson = new JSONObject();
replaceJson.put("main_file", paths[i]); //将每一个待替换素材路径装入main_file字段下
JsonArray replaceArray = new JSONArray(); //创建可替换素材的JsonArray
List<SXTemplateAsset> list = utils.getRelatedAssetForFile(i);//根据待替换的素材index构建需要替换的素材对象列表
for (SXTemplateAsset sxTemplateAsset : list) {
if (sxTemplateAsset.getReplaceType() == SX_REPLACE_TYPE_TEXT || sxTemplateAsset.getReplaceType() == SX_REPLACE_TYPE_POWER_TEXT) {
JSONObject assetJson = new JSONObject(sxTemplateAsset.getAsstJson());
if (assetJson.has("ui")) {
JSONObject uiJson = new JSONObject(assetJson.getString("ui"));
if (uiJson.has("default")) {
JSONObject subtitleJson = new JSONObject(); //创建可替换字幕的Json
subtitleJson.put("type", sxTemplateAsset.getReplaceType()); //设置类型
JSONObject attrJson = new JSONObject();
attrJson.put("text", "需要修改的字幕"); //往attr json中装入需要修改的字幕字符串
subtitleJson.put("attr", attrJson);
replaceArray.put(subtitleJson); //往可替换素材JsonArray中添加字幕json
}
}
}
}
replaceJson.put("replaces", replaceArray);
replaceJsonArray.put(replaceJson);
}
sxTemplate.setReplaceableJson(jsonArray.toString());//把新构建的JsonArray对象传入模板