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的内容

现在要是你打印出EditTexttext里面肯定有个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));

更多相关文章

  1. Android配置文件中标签
  2. Android里merge和include标签的使用
  3. Android layout布局属性、标签属性总结大全
  4. Android百度地图相关内容汇总
  5. 【Android】EditText标签调用键盘
  6. Android TextView内容过长加省略号,点击显示全部内容
  7. 解决Android sdk更新不能下载或下载内容过慢
  8. android中TextView内容过长加省略号
  9. android rom短信模块最后获取的Cursor字段内容

随机推荐

  1. Android事件拦截机制(一)
  2. Android拍照获得图片URI为空的处理方法
  3. Android(安卓)版本代号
  4. 【原创】Android仿新浪微博的“更多”页
  5. 使用 IntelliJ 查看 Android(安卓)源码
  6. ListView的item点击失效解决
  7. Android(安卓)HTTP GET/POST
  8. Android(安卓)DOM解析XML示例程序
  9. java - How to install and use db4o for
  10. Android(安卓)分享到其他app