我认为这将是更有用的建立Spannable。

private static final Factory spannableFactory = Spannable.Factory

.getInstance();

private static final Map emoticons = new HashMap();

static {

addPattern(emoticons, ":)", R.drawable.emo_im_happy);

addPattern(emoticons, ":-)", R.drawable.emo_im_happy);

// ...

}

private static void addPattern(Map map, String smile,

int resource) {

map.put(Pattern.compile(Pattern.quote(smile)), resource);

}

public static boolean addSmiles(Context context, Spannable spannable) {

boolean hasChanges = false;

for (Entry entry : emoticons.entrySet()) {

Matcher matcher = entry.getKey().matcher(spannable);

while (matcher.find()) {

boolean set = true;

for (ImageSpan span : spannable.getSpans(matcher.start(),

matcher.end(), ImageSpan.class))

if (spannable.getSpanStart(span) >= matcher.start()

&& spannable.getSpanEnd(span) <= matcher.end())

spannable.removeSpan(span);

else {

set = false;

break;

}

if (set) {

hasChanges = true;

spannable.setSpan(new ImageSpan(context, entry.getValue()),

matcher.start(), matcher.end(),

Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

}

}

}

return hasChanges;

}

public static Spannable getSmiledText(Context context, CharSequence text) {

Spannable spannable = spannableFactory.newSpannable(text);

addSmiles(context, spannable);

return spannable;

}

Actualy this code based on source from native from native Html class。

编辑:更新后的版本有戏剧性的速度提升。

android 显示表情符号,在Android中显示表情符号相关推荐

  1. android 调出键盘表情_如何在Android的G板键盘中搜索表情符号和GIF | MOS86

    老实说,这里是1010mh1112 GIF和表情符号是新形式的沟通.像他们似乎愚蠢的,他们以某种方式添加了一个额外的层次,我们与朋友和家人通过文本或即时消息交互的方式,否则可能会干燥.虽然表情符号长期 ...

  2. VS code解决Latex不显示参考文献,正文中显示[?]的问题

    编译后显示,同时不显示参考文献: 解决方法: 编译一遍,确保与.tex同一目录文件夹中有.aux文件 点击vscode顶部导航栏 terminal -> new terminal 导出控制台 输 ...

  3. php中如何显示blob,在PHP中显示(LONGBLOB)内容

    我试图显示存储在我的LONGBLOB中的PDF文件.当我执行代码时,我只会得到文件的名称.我想在查看器中显示PDF文件. 有人知道我该如何解决吗? 这是我的脚本: $tpurchase_id = $_ ...

  4. linux 显示隐藏文件_Mac Finder中显示和隐藏文件的方法

    Mac Finder中显示和隐藏文件的方法 按照以下步骤查看Mac上Finder中的隐藏文件. 打开Finder窗口 现在在左栏中,点击 "设备 "下的Mac名称. 选择并点击启动 ...

  5. Android gridview 嵌套在listview中显示不全问题

    在开发中,常常会遇到这样的问题,需要在listview中去嵌套一个gridview. 但是用原生的gridview并不能满足要求,因为会有显示不全的问题.所以自定义一个属于自己的gridview就可以 ...

  6. android+多种行视图,android – 在react-native列表视图中显示多种类型行的正确方法是什么?...

    所以我们想要的是: 在iOS中,我们可以为每个单元格类型使用多个cellIdentifier来创建高性能列表视图. 我现在拥有的是什么 render() { const dataBlob = [ { ...

  7. android笔记之在WebView中显示ProgressBar的两种方法

    http://blog.csdn.net/liuzhidong123/article/details/6450334 本文基于Creative Commons Attribution 2.5 Chin ...

  8. 在html中不显示内容是,网页中显示的内容在源文件中找不到是什么原因_html/css_WEB-ITnose...

    源文件中只显示主页相关的源码,单词的解释都不显示 回复讨论(解决方案) 因为是ajax获取的 javascript运算的结果在html中当然没有. 可以在dom结构中查看. 因为是ajax获取的 aj ...

  9. java数组显示_Java 1.5中显示数组

    很长一段时间以来,Java编程人员都自己编写方法来打印数组的内容.这是因为JDK没有提供一种将数组转换为字符串值的简便方法.更糟糕的是,一个字符串数组总是从它的toString方法中返回如下信息: [ ...

  10. jupyter 服务器 显示不完全,Jupyter中显示DataFrame的行显示不完全

    vue + element-ui 的级联选择器 el-cascader 样式不显示 vue + element-ui 的级联选择器 el-cascader 样式不显示 使用 vue + element ...

最新文章

  1. 2022-2028年中国IT外包市场投资分析及前景预测报告
  2. Datawhale组队学习周报(第021周)
  3. DLL(MFC)通过Window消息向C#程序传递数据
  4. python处理大量excel数据-使用python将大量数据导出到Excel中的小技巧分享
  5. 使用DOM4J读取和维护XML数据
  6. 如果是你你会如何重新设计和定义维基百科(wikipedia)?
  7. 计算机视觉论文-2021-06-30
  8. VS Code解决Go相关工具无法安装问题
  9. java core 作者_java core dump分析实战
  10. linux对perl脚本加密,对Perl代码进行编译与加密
  11. 区块链 数据读权限 设计方案
  12. 10年老程序员:到底是学前端好还是后端好?
  13. 软件版本GA、RC、beta等含义
  14. iOS-使用CoreLocation定位
  15. Q上多项式可约性深化定理
  16. TSINGSEE青犀视频开发安全帽智能检测识别经验分享
  17. 激光测距仪工作模式及维保——TFN BKD系列双目激光测距仪
  18. C语言打印cav,最近大热的Cav Empt(C.E),你了解?
  19. 如何选购台式电脑和笔记本?购买时应注意什么
  20. JS闭包函数和回调函数

热门文章

  1. ASEMI快恢复二极管ES8JC参数,ES8JC规格,ES8JC封装
  2. Spark行动算子(Action)--reduce算子
  3. 【求职】瓜子C++方向面经
  4. 何伊凡:猪、土豪与屌丝
  5. 基于系统数据过滤权限设计之----lft, rgt的无限分类算法
  6. 卡迪夫大数据专业排名_大数据分析:英超大数据!布莱顿vs卡迪夫
  7. 开心消消乐在屏幕中向下移动的完整代码
  8. 开发文档生成工具--Doxygen
  9. 什么是spring,他能够做什么
  10. Study - Material Design 浅析