Android表情功能
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的内容
现在要是你打印出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 新浪微博客户端的表情功能的实现
这是一篇好文章,我转来收藏,技术的最高境界是分享. 最近在搞android 新浪微博客户端,有一些心得分享弄android客户端表情功能可以用以下思路1.首页把新浪的表情下载到本地一文件夹种,表情图片 ...
- [译]:Xamarin.Android平台功能——位置服务
返回索引目录 原文链接:Location Services. 译文链接:Xamarin.Android平台功能--位置服务 本部分介绍位置服务以及与如何使用位置提供商服务 Location Servi ...
- Cocos2d-x使用android拍照功能加载照片内存过大,通过另存照片尺寸大小解决
使用2dx调用android拍照功能,拍照结束后在2dx界面显示拍照照片,如果不对照片做处理,会出现内存过大的问题,导致程序崩溃,如果仅仅另存拍照照片,则照片质量大小均下降,导致照片不够清晰,后来发现 ...
- Android定位功能
不说废话,直接说说实现android定位有关的API吧. 这些API都在android.location包下,一共有三个接口和八个类.它们配合使用即可实现定位功能. 三个接口: GpsStatus.L ...
- Android定位功能(二)
在前文Android定位功能(一)中,已经大致介绍了一下在Android平台中,和定位功能相关的类,并举例获取了位置信息.但是前文是基于Criteria定制了一个标准,通过getBestProvide ...
- Android P 功能和 API
Android P 功能和 API Android P 为用户和开发者引入众多新特性和新功能. 本文重点介绍面向开发者的新功能. 要了解新 API,请阅读 API 差异报告或访问 Android AP ...
- Android表情开发
Android表情开发 效果图: 源码下载-github:https://github.com/SiberiaDante/EmotionApp (觉得有用的给个星星,支持一下哦)
- Delphi xe7 up1 调用android振动功能
Delphi xe7 up1 调用android振动功能 振动用到以下4个单元: Androidapi.JNI.App,Androidapi.JNIBridge,Androidapi.JNI.Os,A ...
- 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现
我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...
随机推荐
- 将GitLab的数据库导入阿里云PostgreSQL RDS
GitLab的数据库用的是PostgreSQL,之前由于阿里云RDS不支持PostgreSQL,只能将GitLab的数据库部署在云服务器上. 6月1日得知阿里云推出了PostgreSQL RDS,于是 ...
- ASP.NET的一次奇遇:UserControl写成Control引发的w3wp进程崩溃
昨天在写代码中一不小心将UserControl写成了Control,将原来应该继承自System.Web.UI.UserControl的用户控件,比如下面的BlogStats: <%@ Cont ...
- C#手动做一个负载均衡服务器
思路 负载均衡服务器最出名的当数 Nginx了.Nginx服务器通过异步的方式把连接转发给内网和N个服务器,用来分解单台应用服务器的压力,了解了原理及场景后,用C#来实现一个.思路如下: 1. 使用一 ...
- Jpeg2000 简介
http://www.baike.com/wiki/Jpeg2000 总结Jpeg2000的六个方面: ⑴ JPEG2000可以方便地实现渐进式传输,这是JPEG2000的重要特征之一.看到这种 ...
- [stm32] 利用uc-gui封装画图和画线函数移植51上的模拟动画
>_<:这里的动画是黄色矩形区域中一个模仿俯视图的起重机运作动画,一个是模仿主视图的吊钩的运动.通过改变初始Init函数中的数据b_x,b_y实现矩形区域的移动.当实时采集时要首先根据起重 ...
- SharePoint 2013 REST 以及 OData 基础
这篇文章会介绍: 简单的介绍REST,OData OData实现细节 OData在SharePoint 2013中的实现 为什么REST很重要 过去几年基于REST的webservice在IT企业越来 ...
- AngularJS快速入门指南11:事件
AngularJS拥有自己的HTML事件指令. ng-click指令 ng-click指令定义了AngularJS的click事件. <div ng-app="" ng-co ...
- atitit.j2ee 1.5 1.6 的不同跟 Servlet 3.0新特性总结
atitit.j2ee 1.5 1.6 的不同跟 Servlet 3.0新特性总结 1. jar比较,j2ee 1.6 添加了许多的jar 1 2. ,Servlet 3.0 2 2.1. 可插性 ...
- paip.自动import的实现跟java.lang.SecurityException Prohibited package name java
paip.自动import的实现跟java.lang.SecurityException Prohibited package name java #-----自动import 因为java.lang ...
- MyEclipse使用总结——设置MyEclipse使用的Tomcat服务器 设置JDK
一.设置使用的Tomcat服务器 如果不想使用MyEclipse自带的tomcat服务器版本,那么可以在MyEclipse中设置我们自己安装好的tomcat服务器 设置步骤如下: Window→Pre ...