[安卓项目学习笔记]将文本中的emoji字符处理为表情图片

来源:互联网 发布:新版泗阳网络问政 编辑:程序博客网 时间:2024/06/05 05:45

SpanStringUtils 工具类
用途:将文本中的emoji字符处理为表情图片
(利用正则,取出特定的字符并且找到相应的图片,再将图片导入ImageSpan ,最终使用spannableString将ImageSpan存入)

public class SpanStringUtils {    public static SpannableString getEmotionContent(int emotion_map_type,final Context context, final TextView tv, String source) {        SpannableString spannableString = new SpannableString(source);        Resources res = context.getResources();        String regexEmotion = "\\[([\u4e00-\u9fa5\\w])+\\]";        Pattern patternEmotion = Pattern.compile(regexEmotion);        Matcher matcherEmotion = patternEmotion.matcher(spannableString);        while (matcherEmotion.find()) {            // 获取匹配到的具体字符            String key = matcherEmotion.group();            // 匹配字符串的开始位置            int start = matcherEmotion.start();            // 利用表情名字获取到对应的图片            Integer imgRes = EmotionUtils.getImgByName(emotion_map_type,key);            if (imgRes != null) {                // 压缩表情图片                int size = (int) tv.getTextSize()*13/10;                Bitmap bitmap = BitmapFactory.decodeResource(res, imgRes);                Bitmap scaleBitmap = Bitmap.createScaledBitmap(bitmap, size, size, true);                ImageSpan span = new ImageSpan(context, scaleBitmap);                spannableString.setSpan(span, start, start + key.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);            }        }        return spannableString;    }}
原创粉丝点击