UBB码表情替换方法

今天来个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//]" }}

注意写好正则就行了,试一下吧

虎年了大家应该试一试老虎表情哦! 本组表情来源于网络,表情版权归网络所有。 此组表情共50个,有48个是可爱的老虎,还有1个是❤,还有1个是❀。 下面介绍下和其他表情不一样的。 这组表情的最大特点就是:自动排序。 表情的先后顺序是按表情的点击率排的,点击率高的排在前面。 表情的顺序使用的是json存储到cookie中,针对排序插件还提供了表情顺序的导入和导出以及清除现有的排序。 returnstr = [{ 'n': '暴牙', 'c': '0' }, { 'n': '鄙视', 'c': '0' }….{ 'n': '抓狂', 'c': '0'}]; n:表情名称 c:该表情点击次数 导出:你可以将表情顺序字符串导出来保存下来,或者是修改表情的个数和点击率后重新导入,就可以按照你自己定义的顺序排列表情了。 导入:导入新的排序规则。 注:在导入的时候程序并没有做太严格的限制,如果你恶意修改可能会导致表情无法正常使用。可以删除Cookie后再使用表情。 清除:将清除现有的排序规则,使用系统默认的排序规则。 自动排序设置(打开自动排序,关闭自动排序):在使用的时候当你觉的某个时候的排序效果最好,你可以关闭自动排序 那么表情就会按照你现在排序显示。你也可以选择开启排序,进行排序。 表情另个特点:支持多用户。由于在保持json到Cookie,键的命名是 “用户名cookie”,所以不同用户使用同一浏览器可以有不同的排序效果。 还有个插件是 显示楼主 的一些信息 记得我第一次在CSDN(java版块)发帖的时候,有一个机器人会自动回复楼主的一些排名,结贴等信息。这次也顺便写了个插件。仅供参考下。 代码开源,大家一起探讨。大家看我的代码哪写的有问题,或者能有什么更好的优化方法,谢谢你别吝啬提出来,大家一起进步!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值