展会信息港展会大全

向EditView插入qq表情,并可删除表情或文字 android开发教程
来源:互联网   发布日期:2016-01-06 19:14:09   浏览:3781次  

导读:参考了一下别人实现的插入qq表情功能,在此基础上加了删除功能代码如下:package com push notif;import java lang reflect Field;import java util Random;import android app Activity;import android gr ...

参考了一下别人实现的插入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 = 1 + new Random().nextInt(28);

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, 0, 4, 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 > 0) {

String body = et.getText().toString();

if (!TextUtils.isEmpty(body)) {

String tempStr = body.substring(0, selectionStart);

int i = tempStr.lastIndexOf("[");// 获取最后一个表情的位置

if (i != -1) {

CharSequence cs = tempStr

.subSequence(i, selectionStart);

if (cs.equals("[fac")) {// 判断是否是一个表情

et.getEditableText().delete(i, selectionStart);

return;

}

}

et.getEditableText().delete(tempStr.length() - 1,

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>

赞助本站

人工智能实验室

相关热词: qq表情 EditView android

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港