Android表情功能

标签(空格分隔): 未分类


转载自:android edittext插入表情(基于socket方式),并对文中不正确的内容进行整理和修正

涉及知识点:

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));

Android表情功能的更多相关文章

  1. android 新浪微博客户端的表情功能的实现

    这是一篇好文章,我转来收藏,技术的最高境界是分享. 最近在搞android 新浪微博客户端,有一些心得分享弄android客户端表情功能可以用以下思路1.首页把新浪的表情下载到本地一文件夹种,表情图片 ...

  2. [译]:Xamarin.Android平台功能——位置服务

    返回索引目录 原文链接:Location Services. 译文链接:Xamarin.Android平台功能--位置服务 本部分介绍位置服务以及与如何使用位置提供商服务 Location Servi ...

  3. Cocos2d-x使用android拍照功能加载照片内存过大,通过另存照片尺寸大小解决

    使用2dx调用android拍照功能,拍照结束后在2dx界面显示拍照照片,如果不对照片做处理,会出现内存过大的问题,导致程序崩溃,如果仅仅另存拍照照片,则照片质量大小均下降,导致照片不够清晰,后来发现 ...

  4. Android定位功能

    不说废话,直接说说实现android定位有关的API吧. 这些API都在android.location包下,一共有三个接口和八个类.它们配合使用即可实现定位功能. 三个接口: GpsStatus.L ...

  5. Android定位功能(二)

    在前文Android定位功能(一)中,已经大致介绍了一下在Android平台中,和定位功能相关的类,并举例获取了位置信息.但是前文是基于Criteria定制了一个标准,通过getBestProvide ...

  6. Android P 功能和 API

    Android P 功能和 API Android P 为用户和开发者引入众多新特性和新功能. 本文重点介绍面向开发者的新功能. 要了解新 API,请阅读 API 差异报告或访问 Android AP ...

  7. Android表情开发

    Android表情开发 效果图:            源码下载-github:https://github.com/SiberiaDante/EmotionApp (觉得有用的给个星星,支持一下哦)

  8. Delphi xe7 up1 调用android振动功能

    Delphi xe7 up1 调用android振动功能 振动用到以下4个单元: Androidapi.JNI.App,Androidapi.JNIBridge,Androidapi.JNI.Os,A ...

  9. 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现

    我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...

随机推荐

  1. 7.1 Java中的堆和栈

    栈与堆都是Java用来在Ram中存放数据的地方.Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.ane ...

  2. Ajax无刷新分页

    前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxPage ...

  3. bzoj 1977

    题意:求严格的次小生成树.点n<=100000,m<=300000 思路:很容易想到先做一边最小生成树,然后枚举每条非树边(u, v, w),然后其实就是把u,v路径上小于w的最大边替换成 ...

  4. 《Automatic Face Classification of Cushing’s Syndrome in Women – A Novel Screening Approach》学习笔记

    <针对女性库欣综合征患者的自动面部分类-一种新颖的筛查方法> Abstract 目的:库兴氏综合征对身体造成相当大的伤害如果不及时治疗,还经常是诊断的时间太长.在这项研究中,我们旨在测试面 ...

  5. Linux在Hyper-V中实现与Windows的宽带共享上网

    相信不少读者都会做(或者曾经做过)这么一项活动——把一个Linux系统安装到Windows系统下的虚拟机软件中,然后在Windows这个大环境中对Linux进行学习或者一些实验操作.在进行这么一项活动 ...

  6. 用c#开发微信 (6) 微渠道 - 推广渠道管理系统 1 基础架构搭建

    我们可以使用微信的“生成带参数二维码接口”和 “用户管理接口”,来实现生成能标识不同推广渠道的二维码,记录分配给不同推广渠道二维码被扫描的信息.这样就可以统计和分析不同推广渠道的推广效果. 本系统使用 ...

  7. Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动

    当我们在流程里添加步骤时,有一些默认的步骤,像创建.更新.发邮件等,但如果你想加一个里面没有的步骤,比如发SMS消息,或者调用一个外部的web service,怎么办?这时就只能自定义一个流程活动了. ...

  8. GitLab:解决Merge Request中Commits不更新的问题

    最近在使用 GitLab 的 Merge Requests 功能进行 Code Review .操作流程是这样的: 1)开发人员A要给一个项目增加一个新功能,先在这个项目上创建一个 Git 分支. 2 ...

  9. Wix 安装部署教程(四) 添加安装文件及快捷方式

    通过之前三篇的介绍,大家对wix的xml部署方式也应该有一些认识,今天天气不错,再来一发.主要介绍桌面,开始菜单,卸载等功能的如何添加.希望园友们支持! 一.如何添加文件 Demo打包程序很简单,就一 ...

  10. git查看一个文件的历史记录

    git log --all -- '*'FILENAME'*' 支持模糊查询 主要用于查找历史上被删除的文件 可以做成git的一个快捷命令 find = "!f(){ git log --a ...