【HR】android开发之表情包功能
最近开发论坛练手时遇到了一个问题,怎么在EditText插入图片?CSDN上搜了下,终于解决了
1.利用Html
EditText view = findViewById(控件id);
view.setText(Html.fromHtml("<img src=\"图片链接\"/>"));
这种方法坏处太多,就不多赘述了[狂汗]
2.利用SpannableString类
EditText view = findViewById(控件id);
int index = view.getSelectionStart();//记录光标位置
Editable edit = view.getEditableText();//获取edittext内容
SpannableString ss = new SpannableString("");//将替换为图片
Drawable d = getResources().getDrawable(图片id);
d.setBounds(0, 0, 50, 50);//设置图片大小
ImageSpan span = new ImageSpan(d,ImageSpan.ALIGN_BOTTOM);
ss.setSpan(span, 0, ss.length(),
if (index < 0 || index >= edit.length()) {
edit.append(ss);//如果光标在内容后面就直接添加
} else {
edit.insert(index, ss);//反之则在光标位置插入
}
这种方法用法很广,非常方便[滑稽]
3.开发表情功能
(1).插入表情(√)
(2).正则匹配表情符号并替换为图片显示在textview上(×)
正则的用法就去www.baidu.com上搜吧,这里不多讲[真棒]
Pattern pattern = Pattern.compile("\\+)]");//匹配,记得加转义符号\\
Matcher match = pattern.matcher(需要匹配的内容);
SpannableString ss = new SpannableString(需要匹配的内容);
while (match.find()) {//一直匹配
int number = Integer.parseInt(match.group(1)) - 1;//获取第一个括号里的数字,并转为int类型,为等下取数组图片做铺垫
Drawable d = getResources().getDrawable(tp);/*tp是一个int数组,数组里存的是图片id,例如
private int[] tp = {
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
};
*/
d.setBounds(0, 0, 50, 50);
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);
ss.setSpan(span, match.start(), match.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// match.start()匹配字符串下标(开始)
// match.end()匹配字符串下标(结束)
}
view.setText(ss);//设置text
OK表情功能开发完成
注:非原创,搬砖
http://cdn.u1.huluxia.com/g4/M02/CD/AB/rBAAdmFn7HmAQElfAAA5vtoCYHE751.jpghttp://cdn.u1.huluxia.com/g4/M02/CD/AB/rBAAdmFn7HqAWEnaAAB7N58Al-c820.jpghttp://cdn.u1.huluxia.com/g4/M02/CD/AB/rBAAdmFn7HqAM7uIAALyO_h1nkc839.jpghttp://cdn.u1.huluxia.com/g4/M02/CD/AB/rBAAdmFn7HuAMGNkAALvLY7q4Vk345.jpg
页:
[1]