android gif表情
2015-07-22 00:00
627 查看
private SpannableStringBuilder handler(final TextView gifTextView,String content) {
SpannableStringBuilder sb = new SpannableStringBuilder(content);
String regex = "(\\#\\[face/png/f_static_)\\d{3}(.png\\]\\#)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(content);
while (m.find()) {
String tempText = m.group();
try {
String num = tempText.substring("#[face/png/f_static_".length(), tempText.length()- ".png]#".length());
String gif = "face/gif/f" + num + ".gif";
/**
* 如果open这里不抛异常说明存在gif,则显示对应的gif
* 否则说明gif找不到,则显示png
* */
InputStream is = context.getAssets().open(gif);
sb.setSpan(new AnimatedImageSpan(new AnimatedGifDrawable(is,new AnimatedGifDrawable.UpdateListener() {
@Override
public void update() {
gifTextView.postInvalidate();
}
})), m.start(), m.end(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
is.close();
} catch (Exception e) {
String png = tempText.substring("#[".length(),tempText.length() - "]#".length());
try {
sb.setSpan(new ImageSpan(context, BitmapFactory.decodeStream(context.getAssets().open(png))), m.start(), m.end(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}
return sb;
}
SpannableStringBuilder sb = new SpannableStringBuilder(content);
String regex = "(\\#\\[face/png/f_static_)\\d{3}(.png\\]\\#)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(content);
while (m.find()) {
String tempText = m.group();
try {
String num = tempText.substring("#[face/png/f_static_".length(), tempText.length()- ".png]#".length());
String gif = "face/gif/f" + num + ".gif";
/**
* 如果open这里不抛异常说明存在gif,则显示对应的gif
* 否则说明gif找不到,则显示png
* */
InputStream is = context.getAssets().open(gif);
sb.setSpan(new AnimatedImageSpan(new AnimatedGifDrawable(is,new AnimatedGifDrawable.UpdateListener() {
@Override
public void update() {
gifTextView.postInvalidate();
}
})), m.start(), m.end(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
is.close();
} catch (Exception e) {
String png = tempText.substring("#[".length(),tempText.length() - "]#".length());
try {
sb.setSpan(new ImageSpan(context, BitmapFactory.decodeStream(context.getAssets().open(png))), m.start(), m.end(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}
return sb;
}
相关文章推荐
- Android SDK
- URL not found: D:\android-sdk-windows\temp\sysimg_x86-18_r02.zip (拒绝访问。)
- android实现侧滑菜单
- androidmainfest.xml详解
- Android studio .9.png图片报错问题解决
- convertView,这个是Android在为我们而做的缓存机制。
- Android之——拦截短信
- Android中的动态加载机制
- Android之——拦截外拨电话
- Android(java)学习笔记86:案例短信发送器
- This Handler class should be static or leaks might occur Android警告处理
- android locationManager定位
- android动画模块 Tween 动画的实现原理 详解
- [Android] Service服务详解以及如何使service服务不被杀死
- Android socket在系统休眠情况下调研
- android ndk开发hello world入门
- Android 判断字符串是否是身份证、邮箱、银行卡、手机号、中文
- Android总结之PopupWindow
- Android Studio下配置AndroidAnnotation
- Android中添加水平线和垂直线