EditView插入qq表情,可删除表情或文字
代码如下:
代码如下: package com.push.notif; import java.lang.reflect.Field;
import java.util.Random; import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.ImageSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class ActivityA extends Activity implements OnClickListener {
private Button showExpression;
private EditText et;
private Button cancel; @Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.maina);
et = (EditText) findViewById(R.id.et);// 显示图文的EditView
showExpression = (Button) findViewById(R.id.button);// 点击显示表情的的button
cancel = (Button) findViewById(R.id.cancel);// 点击删除表情和文字的Button
showExpression.setOnClickListener(this);
cancel.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
int randomID = + new Random().nextInt();
try {
// 表情文件统一放在了res/drawable文件下
Field field = R.drawable.class.getDeclaredField("face"
+ randomID);
int resouseId = Integer.parseInt(field.get(null).toString());
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
resouseId);
ImageSpan is = new ImageSpan(ActivityA.this, bitmap);//用ImageSpan指定图片替代文字
SpannableString ss = new SpannableString("[fac");// 其实写入EditView中的是这个字段“[fac”,表情图片会替代这个字段显示
// 如果为了区分表情可以写一个集合每个表情对应一段文字
ss.setSpan(is, , , SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
et.append(ss);// 追加到EditView中
} catch (Exception e) {
e.printStackTrace();
}
break;
case R.id.cancel:// 删除表情,当时表情时删除“[fac”的长度,是文字时删除一个长度
int selectionStart = et.getSelectionStart();// 获取光标的位置
if (selectionStart > ) {
String body = et.getText().toString();
if (!TextUtils.isEmpty(body)) {
String tempStr = body.substring(, selectionStart);
int i = tempStr.lastIndexOf("[");// 获取最后一个表情的位置
if (i != -) {
CharSequence cs = tempStr
.subSequence(i, selectionStart);
if (cs.equals("[fac")) {// 判断是否是一个表情
et.getEditableText().delete(i, selectionStart);
return;
}
}
et.getEditableText().delete(tempStr.length() - ,
selectionStart);
}
}
break;
default:
break;
}
}
}
布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ll"
android:gravity="center_vertical"
android:orientation="vertical" >
<EditText
android:id="@+id/et"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="显示qq表情"
/>
<Button android:id="@+id/cancel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="删除表情"
/>
</LinearLayout>
EditView插入qq表情,可删除表情或文字的更多相关文章
- 代码提交的时候可以插入表情了-GitHub表情的使用
GitHub官方有个表情项目,旨在丰富文字信息.意味着你可以在提交代码的时候,在提交信息里面添加表情,同时也可以在项目的ReadMe.md文件里面使用表情.除此之外,当然还有项目在GitHub上的wi ...
- Android 聊天表情输入、表情翻页带效果、下拉刷新聊天记录
经过一个星期的折腾,最终做完了这个Android 聊天表情输入.表情翻页带效果.下拉刷新聊天记录.这仅仅是一个单独聊天表情的输入,以及聊天的效果实现.由于我没有写server,所以没有两方聊天的效果. ...
- Entity Framework 6 Recipes 2nd Edition(10-8)译 - >映射插入、修改、删除操作到存储过程
10-8. 映射插入.修改.删除操作到存储过程 问题 想要映射插入.修改.删除操作到存储过程 解决方案 假设已有运动员实体模型,如Figure 10-8所示. 对应的数据库表如Figure 10-9所 ...
- Entity Framework 6 Recipes 2nd Edition(10-10)译 - > 为TPH继承的插入、更新、删除操作映射到存储过程
10-10. 为TPH继承的插入.更新.删除操作映射到存储过程 问题 TPH继承模型,想把它的插入.修改.删除操作映射到存储过程 Solution 假设数据库有一个描述不同种类的产品表(Product ...
- MySQL(四) 数据表的插入、更新、删除数据
序言 数据表的插入.更新.删除非常简单,但是简单的也要学习,细节决定成败. ---WH 一.插入数据 格式:INSERT INTO 表名(字段名...)VALUES(值...); 创建环境 使用per ...
- PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
原文: PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...
- 网页中插入QQ在线功能
网页中插入QQ在线功能 本随笔记录的是网页中如何插入qq在线聊天,这里讲解的是 普通QQ在线聊天操作. 例:第一种方式 使用 tencent://message/?uin=QQ号码&Site ...
- SQL Server XML基础学习之<7>--XML modify() 方法对 XML 数据中插入、更新或删除
/*------------------------------------------------------------------------------+ #| = : = : = : = : ...
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...
随机推荐
- windows下python管理右键菜单
实现很简单,不记得什么时候写的了,贴出来希望能有所价值 """ Windows中创建右键菜单 """ import os import sy ...
- c# 操作excle[转]
//引用Microsoft.Office.Interop.Excel.dll文件 //添加using using Microsoft.Office.Interop.Excel; using Excel ...
- encodeURI、encodeURIComponent、btoa及其应用场景
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,’,(,),*,+,,,-,.,/,:,;,=,?,@ ...
- Spark Launcher
- JavaScript设计模式-13.组合模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 安装Postgresql之后,创建用户 配置rails
登录 sudo su - postgres psql 1 创建Postgresql新用户,devpg是用户名,密码也是devpg, 不是超级管理员,拥有创建数据库权限,登录权限,继承拥有角色权限 cr ...
- Dubbo源码解读
1.提升SOA的微服务架构设计能力 通过读dubbo源码是一条非常不错的通往SOA架构设计之路,毕竟SOA的服务治理就是dubbo首先提出来的,比起你去看市面上的SOA微服务架构的书籍,学到的架构 ...
- centos6.5下安装zip格式的tomcat7和tomcat8,并同时运行
前提: 我的tomcat7安装在 /home/hadoop/software/apache-tomcat-7.0.69, tomcat8安装在 /home/hadoop/software/apache ...
- linux定时任务之crontab
1.使用crontab crontab -u //设定某个用户的cron服务 crontab -l //列出某个用户cron服务的详细内容 crontab -r //删除某个用户的cron服务 cro ...
- C语言经典面试题目(转的,不过写的的确好!)
第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一 ...