android 小表情

来源:互联网 发布:网络零点女装 编辑:程序博客网 时间:2024/04/27 19:33
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;
}
}
原创粉丝点击