android中表情功能实现,android sina 微博表情功能的实现
表情为本地表情,把所有的表情图片装载到gridview里面。然后在gridview的点击事件里做如下处理。
@Override
public void onItemClick(AdapterView> arg0, View arg1, int index, long arg3) {
if(mEditText == null) return;
String content = mEditText.getText().toString().trim() + emotionNames[index];
if(TextUtils.isEmpty(content)) return;
Log.d(TAG, "SinaEmotionView: content = " + content);
boolean isLeft = true;//应该出现哪一边的括号
List leftBracketAt = new ArrayList();
List rightBracketAt = new ArrayList();
char[] c_content = content.toCharArray();
for(int i = 0; i < c_content.length; i++){
if('[' == c_content[i]){
//Log.d(TAG, "left ------- " + i);
if(!isLeft){//如果不该出现左括号时,出现了。则覆盖上一个。
leftBracketAt.remove(leftBracketAt.size() - 1);
}
leftBracketAt.add(new Integer(i));
isLeft = false;
}else if(']' == c_content[i]){
//Log.d(TAG, "right ------- " + i);
if(isLeft){
rightBracketAt.remove(leftBracketAt.size() - 1);
}
rightBracketAt.add(new Integer(i));
isLeft = true;
}
}
SpannableString spannable = new SpannableString(content);
//获得左右[]位置链表长度小的链表的长度//因为用户也有可能输入"[" 或者 "]"
int miniSize = leftBracketAt.size() <= rightBracketAt.size() ? leftBracketAt.size() : rightBracketAt.size();
for(int j = 0; j < miniSize; j++){
int leftAt = leftBracketAt.get(j);
int rightAt = rightBracketAt.get(j) + 1;
while(leftAt >= rightAt){
rightBracketAt.remove(j);
rightAt = rightBracketAt.get(j);
//Log.d(TAG, "while ---- ");
}
String name = content.substring(leftAt, rightAt);
//Log.d(TAG, "name ---- " + name + ".");
//查询name是不是表情的name
int pos = emotionNamePos(name);
if(-1 != pos){
//把文字替换成图片来显示
Drawable drawable = getResources().getDrawable(emotionIconIds[pos]);
drawable.setBounds(0, 10, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()+10);
ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
spannable.setSpan(span, leftAt, rightAt, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
}
mEditText.setText(spannable);
//设置光标位置到最后
mEditText.requestFocus();
mEditText.setSelection(content.length());
}
其中,
mEditText是要显示表情及微博文本内容的EditText控件
emotionIconIds是表情图片id的int型数组
emotionNames是表情对应的文字(如,"[哈哈]")的一个字符串数组
/**
* 查询一个字符串是不是一个表情的名字,
* 如果是,则返回位置,如果不是则返回-1;
* @param name
* @return
*/
private int emotionNamePos(String name){
if(name == null) return -1;
for(int i = 0; i < emotionNames.length; i++){
if(name.equals(emotionNames[i])) return i;
}
return -1;
}
android中表情功能实现,android sina 微博表情功能的实现相关推荐
- android中注册的账号密码储存在,Android中使用SharedPreferences完成记住账号密码的功能...
效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 SharedPreferences会记录CheckBox的状态,如 ...
- android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能
如何在Android中利用Intent实现一个页面跳转功能 发布时间:2021-02-20 17:06:31 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了如何在Android中利用 ...
- android计算器功能实现,在android中利用 studio实现一个简单的计算器功能
在android中利用 studio实现一个简单的计算器功能 发布时间:2020-11-07 15:35:20 来源:亿速云 阅读:168 作者:Leah 这篇文章将为大家详细讲解有关在android ...
- 基于Android的sina微博分享功能
该功能是在基于Android的应用中实现sina微博分享,利用sina微博这个平台来推广自己的应用,大家有兴趣可以看看新浪微博开发平台的相关介绍http://open.weibo.com/ 运行结果: ...
- android中bmob云存储,Android中的Bmob移动后端云服务器功能
PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己用servlet作为服务端来实现过滤没有注册过的用户,但是太麻烦,而且不是随时都可以用的.这里介绍一个移动后端云服 ...
- Android中使用自带TextToSpeech实现离线语音合成功能
场景 需要实现在安卓端将一段文字进行语音合成并播报. 此过程可离线不需要网络,不用借助第三方形如科大讯飞或者百度等语音合成SDK或者相关工具等. 注: 博客: https://blog.csdn.ne ...
- Android中通过ImageSwitcher实现相册滑动查看照片功能(附代码下载)
场景 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将需要滚动查看的 ...
- 【译】Android中的安全数据— Android中的加密(第2部分)
目录 锁屏 选择一个钥匙 密钥存储 密钥生成 密钥管理 加密与解密 使用范例 下一步是什么 安全提示 锁屏 如果要保护数据,请保护设备. 为了更加安全,在提供对任何应用程序功能的访问权限之前,我们可以 ...
- 【译】Android中的安全数据— Android中的加密(第1部分)
目录 Java密码体系结构 Android Key Store 样例项目 下一步是什么 安全提示 Java密码体系结构 Android建立在Java密码体系结构(JCA)的基础上,该体系结构提供了用于 ...
- android中录音断点播放,Android实现暂停--继续录音(AudioRecord)
Android提供了两个API用于录音的实现:MediaRecorder 和 AudioRecord,各有优劣. 1.MediaRecorder 已经集成了录音.编码.压缩等,支持少量的录音音频格式, ...
最新文章
- 在web项目中发布jaxws
- [渝粤教育] 中国地质大学 Windows程序设计 复习题 (2)
- CString LPCTSTR LPTSTR 类型的相互转化
- 6点叫醒全员的腾讯是枕戈待旦,还是如李彦宏说的“新瓶装旧酒”
- FFmpeg的H.264解码器源代码简单分析
- 串行通信:常见的串行通信接口协议UART、SPI、I2C简介
- 业余ACMer笔记·6月第三周补题
- 超声广义相干因子( Generalized Coherence Factor,GCF)波束合成仿真
- serv-u 用户使用sftp登录 时间显示不对_宜家中国电商化之路步履蹒跚 或因忽视消费者的使用习惯...
- WTL for MFC Programmers, Part VI - Hosting ActiveX Controls
- 数组基础与字符串(尚学堂视频学习总结_004)
- 数学在计算机方面的应用论文参考文献,数学论文参考文献
- RigNet神经网络模型自动绑定骨骼
- UE4VR学习笔记3
- sql server 数据库中null 转换为 0
- windows 下安装软件乱码
- redis 空格问题
- docker安装postgis
- 基于Spark实现电影点评系统用户行为分析—DataFrame篇(二)
- 适合问卷收益的10个精品项目