Android表情功能
16lz
2021-01-23
Android表情功能
标签(空格分隔): 未分类
转载自:android edittext插入表情(基于socket方式),并对文中不正确的内容进行整理和修正
[TOC]
涉及知识点:
- Android EditText/TextView使用SpannableString显示复合文本
- Android对html支持接口&ImageGetter
1、在EditText光标处插入一个表情
ImageGetter imageGetter = new ImageGetter() {public Drawable getDrawable(String source) {int id = Integer.parseInt(source);Drawable d = getResources().getDrawable(id);d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());return d;}};// 我们先实例化一个ImageGetter,ImageGetter是什么大家自己查查,// 这里可以理解为通过它可以把edittext里面的html标签替换为图片的一个方法// 然后通过Html.fromHtml把它转换成文本格式// Emoji.DATA[position]的意思是从表情ID集合(Emoji.DATA)中取得第position个元素CharSequence cs = Html.fromHtml("<img src='" + Emoji.DATA[position]+ "'/>", imageGetter, null);// 在光标处插入一个表情符editText.getText().insert(editText.getSelectionStart(), cs);Log.i(TAG, "内容:" + filterHtml(Html.toHtml(editText.getText())));
2、过滤EditText的内容
现在要是你打印出EditText
的text
里面肯定有个OBJ
的小图标,我们发出去后也是显示那个样子,我们是要通过socket
发出去的,所以我们不能直接发送editText.getText()
的值,这时候我们需要用一个方法过滤一下才能发,我们还需要一个方法 如下:
public static String filterHtml(String str) { str = str.replaceAll("<(?!br|img)[^>]+>", "").trim(); return unicodeToGBK2(str);}
这就是把ediTtext
的内容过滤,除了<br>
标签和<img>
标签,其他都去掉后的内容,现在就可以发送啦。注意:有些可能发送后就会出现#&62137;
这样编码的内容(中文),需要再转码一下,转码的方法也给大家贴上 如下:
public static String unicodeToGBK2(String s) {String[] k = s.split(";");String rs = "";for (int i = 0; i < k.length; i++) {int strIndex = k[i].indexOf("&#");String newstr = k[i];if (strIndex > -1) {String kstr = "";if (strIndex > 0) {kstr = newstr.substring(0, strIndex);rs += kstr;newstr = newstr.substring(strIndex);}int m = Integer.parseInt(newstr.replace("&#", ""));char c = (char) m;rs += c;} else {rs += k[i];}}return rs;}
3、显示从服务端返回的带有表情的内容
ImageGetter imageGetter = new ImageGetter() {public Drawable getDrawable(String source) {int id = Integer.parseInt(source);Drawable d = getResources().getDrawable(id);d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());return d;}};String serverText = ;// serverText 来自服务端返回editText2.setText(Html.fromHtml(serverText,imageGetter,null));
更多相关文章
- Android配置文件中标签
- Android里merge和include标签的使用
- Android layout布局属性、标签属性总结大全
- Android百度地图相关内容汇总
- 【Android】EditText标签调用键盘
- Android TextView内容过长加省略号,点击显示全部内容
- 解决Android sdk更新不能下载或下载内容过慢
- android中TextView内容过长加省略号
- android rom短信模块最后获取的Cursor字段内容