首页 > 其他 > 详细

SpannableString的应用

时间:2015-11-01 13:52:55      阅读:342      评论:0      收藏:0      [点我收藏+]

要实现如下效果

技术分享

 

从网络中获取到就是一个字符串,我们需要将里面的带@和带#[表情]的文字转义一下成如上的效果,并且蓝色字体可以点击,这里就用到了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.在代码中利用

技术分享

  关于正则表达式,学的还不够到位,一会看看正则表达式的用法。

SpannableString的应用

原文:http://www.cnblogs.com/yangang2013/p/4927533.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!