首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

短信中加入神情

2012-07-01 
短信中加入表情?/** * 来自博客:http://gundumw100.iteye.com/blog/904107 * 用这种方式显示短信中的图片!

短信中加入表情

?

/** * 来自博客:http://gundumw100.iteye.com/blog/904107 * 用这种方式显示短信中的图片!!! *  * */public class SmileyParser {    private Context mContext;    private String[] mSmileyTexts;    private Pattern mPattern;    private HashMap<String, Integer> mSmileyToRes;    public static final int[] DEFAULT_SMILEY_RES_IDS = {        R.drawable.face1,        R.drawable.face2,        R.drawable.face3,        R.drawable.face4,        R.drawable.face5,        R.drawable.face6,        R.drawable.face7,        R.drawable.face8,        R.drawable.face9,        R.drawable.face10,        R.drawable.face11,        R.drawable.face12,        R.drawable.face13,        R.drawable.face14,        R.drawable.face15,        R.drawable.face16,        R.drawable.face17,        R.drawable.face18,    };    public SmileyParser(Context context) {        mContext = context;        mSmileyTexts = mContext.getResources().getStringArray(DEFAULT_SMILEY_TEXTS);        mSmileyToRes = buildSmileyToRes();        mPattern = buildPattern();    }    public static final int DEFAULT_SMILEY_TEXTS = R.array.default_smiley_texts;    private HashMap<String, Integer> buildSmileyToRes() {        if (DEFAULT_SMILEY_RES_IDS.length != mSmileyTexts.length) {//        Log.w("SmileyParser", "Smiley resource ID/text mismatch");            //表情的数量需要和数组定义的长度一致!            throw new IllegalStateException("Smiley resource ID/text mismatch");        }        HashMap<String, Integer> smileyToRes = new HashMap<String, Integer>(mSmileyTexts.length);        for (int i = 0; i < mSmileyTexts.length; i++) {            smileyToRes.put(mSmileyTexts[i], DEFAULT_SMILEY_RES_IDS[i]);        }        return smileyToRes;    }    //构建正则表达式    private Pattern buildPattern() {        StringBuilder patternString = new StringBuilder(mSmileyTexts.length * 3);        patternString.append('(');        for (String s : mSmileyTexts) {            patternString.append(Pattern.quote(s));            patternString.append('|');        }        patternString.replace(patternString.length() - 1, patternString.length(), ")");        return Pattern.compile(patternString.toString());    }    //根据文本替换成图片    public CharSequence replace(CharSequence text) {        SpannableStringBuilder builder = new SpannableStringBuilder(text);        Matcher matcher = mPattern.matcher(text);        while (matcher.find()) {            int resId = mSmileyToRes.get(matcher.group());            builder.setSpan(new ImageSpan(mContext, resId),matcher.start(), matcher.end(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);        }        return builder;    }}
?

?

?

热点排行