今天来个UBB表情替换的功能方法。
前几天一直比较头疼应该如何把UBB替换成表情图片,想过用webview,也想过用viewgroup一个一个往上加。但是都不理想,用webview的话服务器端需要另做处理,比较麻烦;如果用viewgroup的话考虑到如果用户发了一百个表情的话就得用一百个imageview,我觉得会出人命的。后来找了些资料,发现ImageSpan可以实现,闲话不多了,重点说出来了,接下来上代码:
public static CharSequence addSmileySpans(Context mContext,
CharSequence text) {
//之所以不用stringbuffer是因为这个东西可以将object添加进去
SpannableStringBuilder builder = new SpannableStringBuilder(text);
for (int i = 0; i < FilterUbbs.length; i++) {//循环遍历你所有的表情进行查找替换
//正则匹配
Matcher matcher = Pattern.compile(FilterUbbs[1]).matcher(text);
while (matcher.find()) {//查找匹配的类型
int resId = Integer.parseInt(FilterUbbs[0]);//需要替换的图片的资源ID
//哪哪,最重要的是这句话,将文字替换成图片
builder.setSpan(new ImageSpan(mContext, resId),
matcher.start(), matcher.end(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return builder;
}
下面的这个二维数组是放查找正则和替换的图片资源的:
private static String[][] FilterUbbs = {
{ R.drawable.laodao26_10 + "", "//[//bishi//]" },
{ R.drawable.laodao1 + "", "//[:T//]" }}
注意写好正则就行了,试一下吧
UBB码表情替换方法
最新推荐文章于 2021-12-04 17:41:50 发布