android 小表情

public class ExpressionUtil
{
/***
* 表情的正则表达式
*/
public static final String FACE_ZHENGZE = "f0[0-9]{2}|f10[0-7]";

/**
* 对spanableString进行正则判断,如果符合要求,则以表情图片代替
*/
public static void dealExpression(Context context,
SpannableString spannableString, Pattern patten, int start)
throws Exception
{
Matcher matcher = patten.matcher(spannableString);
while (matcher.find())
{
String key = matcher.group();
if (matcher.start() < start)
{
continue;
}
Field field = R.drawable.class.getDeclaredField(key);
int resId = Integer.parseInt(field.get(null).toString());
if (resId != 0)
{
Drawable drawable = context.getResources().getDrawable(resId);
drawable.setBounds(0, 0, drawable.getIntrinsicHeight() / 3,
drawable.getIntrinsicWidth() / 3);
ImageSpan imageSpan = new ImageSpan(drawable);
int end = matcher.start() + key.length();
spannableString.setSpan(imageSpan, matcher.start(), end,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
if (end < spannableString.length())
{
dealExpression(context, spannableString, patten, end);
}
break;
}
}
}

/**获取表情*/
public static SpannableString getExpressionString(Context context,
String str, String zhengze)
{
SpannableString spannableString = new SpannableString(str);
Pattern sinaPatten = Pattern.compile(zhengze, Pattern.CASE_INSENSITIVE); // 通过传入的正则表达式来生成一个pattern
try
{
dealExpression(context, spannableString, sinaPatten, 0);
} catch (Exception e)
{
}
return spannableString;
}


/**是否存在表情*/
public static boolean isEmotion(Context context, String str, String zhengze)
{
Pattern patten = Pattern.compile(zhengze, Pattern.CASE_INSENSITIVE);
Matcher matcher = patten.matcher(str);
while (matcher.find())
{
return true;
}
return false;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值