要实现如下效果
从网络中获取到就是一个字符串,我们需要将里面的带@和带#和[表情]的文字转义一下成如上的效果,并且蓝色字体可以点击,这里就用到了SpannableString
String str = "萌化了哈哈哈哈//@当时我就震惊了:好萌啊!!!//@江家大小姐:@小孩不懂事 萌哭了 [喵喵] 认真点 #双十一破百亿##SEHUN#哈哈@小米 [嘻嘻]";
第一步:首先把表情导入到本地放到相应的资源文件中,建立一个表情类.
1 @SuppressWarnings("serial") 2 public class EmojiUtils implements Serializable{ 3 4 public static Map<String,Integer> emojiMap; 5 6 static{ 7 emojiMap = new HashMap<String,Integer>(); 8 emojiMap.put("[呵呵]", R.drawable.d_hehe); 9 emojiMap.put("[嘻嘻]", R.drawable.d_xixi); 10 emojiMap.put("[哈哈]", R.drawable.d_haha); 11 emojiMap.put("[爱你]", R.drawable.d_aini); 12 emojiMap.put("[挖鼻屎]", R.drawable.d_wabishi); 13 emojiMap.put("[吃惊]", R.drawable.d_chijing); 14 emojiMap.put("[晕]", R.drawable.d_yun); 15 emojiMap.put("[泪]", R.drawable.d_lei); 16 emojiMap.put("[馋嘴]", R.drawable.d_chanzui); 17 emojiMap.put("[抓狂]", R.drawable.d_zhuakuang); 18 emojiMap.put("[哼]", R.drawable.d_heng); 19 emojiMap.put("[可爱]", R.drawable.d_keai); 20 emojiMap.put("[怒]", R.drawable.d_nu); 21 emojiMap.put("[汗]", R.drawable.d_han); 22 emojiMap.put("[害羞]", R.drawable.d_haixiu); 23 emojiMap.put("[睡觉]", R.drawable.d_shuijiao); 24 emojiMap.put("[钱]", R.drawable.d_qian); 25 emojiMap.put("[偷笑]", R.drawable.d_touxiao); 26 emojiMap.put("[笑cry]", R.drawable.d_xiaoku); 27 emojiMap.put("[doge]", R.drawable.d_doge); 28 emojiMap.put("[喵喵]", R.drawable.d_miao); 29 emojiMap.put("[酷]", R.drawable.d_ku); 30 emojiMap.put("[衰]", R.drawable.d_shuai); 31 emojiMap.put("[闭嘴]", R.drawable.d_bizui); 32 emojiMap.put("[鄙视]", R.drawable.d_bishi); 33 emojiMap.put("[花心]", R.drawable.d_huaxin); 34 emojiMap.put("[鼓掌]", R.drawable.d_guzhang); 35 emojiMap.put("[悲伤]", R.drawable.d_beishang); 36 emojiMap.put("[思考]", R.drawable.d_sikao); 37 emojiMap.put("[生病]", R.drawable.d_shengbing); 38 emojiMap.put("[亲亲]", R.drawable.d_qinqin); 39 emojiMap.put("[怒骂]", R.drawable.d_numa); 40 emojiMap.put("[太开心]", R.drawable.d_taikaixin); 41 emojiMap.put("[懒得理你]", R.drawable.d_landelini); 42 emojiMap.put("[右哼哼]", R.drawable.d_youhengheng); 43 emojiMap.put("[左哼哼]", R.drawable.d_zuohengheng); 44 emojiMap.put("[嘘]", R.drawable.d_xu); 45 emojiMap.put("[委屈]", R.drawable.d_weiqu); 46 emojiMap.put("[吐]", R.drawable.d_tu); 47 emojiMap.put("[可怜]", R.drawable.d_kelian); 48 emojiMap.put("[打哈气]", R.drawable.d_dahaqi); 49 emojiMap.put("[挤眼]", R.drawable.d_jiyan); 50 emojiMap.put("[失望]", R.drawable.d_shiwang); 51 emojiMap.put("[顶]", R.drawable.d_ding); 52 emojiMap.put("[疑问]", R.drawable.d_yiwen); 53 emojiMap.put("[困]", R.drawable.d_kun); 54 emojiMap.put("[感冒]", R.drawable.d_ganmao); 55 emojiMap.put("[拜拜]", R.drawable.d_baibai); 56 emojiMap.put("[黑线]", R.drawable.d_heixian); 57 emojiMap.put("[阴险]", R.drawable.d_yinxian); 58 emojiMap.put("[打脸]", R.drawable.d_dalian); 59 emojiMap.put("[傻眼]", R.drawable.d_shayan); 60 emojiMap.put("[猪头]", R.drawable.d_zhutou); 61 emojiMap.put("[熊猫]", R.drawable.d_xiongmao); 62 emojiMap.put("[兔子]", R.drawable.d_tuzi); 63 } 64 65 //根据名字获取图片资源 66 public static int getImagByName(String name){ 67 Integer integer = emojiMap.get(name); 68 return integer == null ? -1 : integer; 69 } 70 }
第二步:利用正则表达式处理字符串
3.在代码中利用
关于正则表达式,学的还不够到位,一会看看正则表达式的用法。
原文:http://www.cnblogs.com/yangang2013/p/4927533.html