- 浏览: 934038 次
- 性别:
- 来自: 山西
文章分类
最新评论
-
白小默:
你好 可以提供下源码DEMO吗,不知为何,我导出来的excel ...
jxls 使用模板文件导出生成excel -
zkzqzzz:
博主威武!
让微信二维码扫描您的APK -
zkzqzzz:
感谢博主 原来那些类都不是必须的 或者自己写!!博主真棒 ...
抢红包插件实现原理浅析 -
zkzqzzz:
博主 请问你的其他类在哪里呢?
抢红包插件实现原理浅析 -
zkzqzzz:
其他类在哪呢?
抢红包插件实现原理浅析
##之间的内容是代表一个话题,@和:之间的是转发这条微博的人,也高亮显示,||代表上一次转发此微博的。url地址也高亮显示。
这个是什么组件啊?是TextView,不会吧?TextView能显示图片吗?肯定能呀。
主要是用到了SpannableString,ForegroundColorSpan,ImageSpan这3个类.
- String origtext = data.getString("origtext");
- SpannableString spannable = new SpannableString(origtext);
- spannable = TextUtil.decorateFaceInStr(spannable, RegexUtil.getStartAndEndIndex(origtext, Pattern.compile("\\/[\u4e00-\u9fa5a-zA-Z]{1,3}")), getResources());//解析成本地表情
- spannable = TextUtil.decorateRefersInStr(spannable, RegexUtil.getStartAndEndIndex(origtext, Pattern.compile("@.*:")), getResources());//高亮显示微薄转发,回复者昵称
String origtext = data.getString("origtext"); SpannableString spannable = new SpannableString(origtext); spannable = TextUtil.decorateFaceInStr(spannable, RegexUtil.getStartAndEndIndex(origtext, Pattern.compile("\\/[\u4e00-\u9fa5a-zA-Z]{1,3}")), getResources());//解析成本地表情 spannable = TextUtil.decorateRefersInStr(spannable, RegexUtil.getStartAndEndIndex(origtext, Pattern.compile("@.*:")), getResources());//高亮显示微薄转发,回复者昵称
- public static List<Map<String,Object>> getStartAndEndIndex(String sourceStr,Pattern pattern){
- List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
- Matcher matcher = pattern.matcher(sourceStr);
- boolean isFind = matcher.find();
- while (isFind) {
- Map<String,Object> map = new HashMap<String, Object>();
- String faceName = matcher.group().substring(1,matcher.group().length());//表情名称
- map.put("startIndex",matcher.start());
- map.put("endIndex",matcher.end());
- map.put("faceName",faceName);
- list.add(map);
- isFind = matcher.find((Integer)map.get("endIndex")-1);
- }
- return list;
- }
public static List<Map<String,Object>> getStartAndEndIndex(String sourceStr,Pattern pattern){ List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); Matcher matcher = pattern.matcher(sourceStr); boolean isFind = matcher.find(); while (isFind) { Map<String,Object> map = new HashMap<String, Object>(); String faceName = matcher.group().substring(1,matcher.group().length());//表情名称 map.put("startIndex",matcher.start()); map.put("endIndex",matcher.end()); map.put("faceName",faceName); list.add(map); isFind = matcher.find((Integer)map.get("endIndex")-1); } return list; }
- public static SpannableString decorateVipInStr(SpannableString spannable,List<Map<String,Object>> list,Resources resources){
- int size = list.size();
- Drawable drawable = null;
- if(list!=null&&list.size()>0){
- for(int i=0;i<size;i++){
- Map<String,Object> map = list.get(i);
- drawable = resources.getDrawable(R.drawable.vip);
- drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
- ImageSpan span = new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE);
- spannable.setSpan(span, (Integer)map.get("startIndex"), (Integer)map.get("endIndex"), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- }
- }
- return spannable;
- }
- public static SpannableString decorateTopicInStr(SpannableString spannable,List<Map<String,Object>> list,Resources resources){
- int size = list.size();
- Drawable drawable = null;
- CharacterStyle foregroundColorSpan=new ForegroundColorSpan(Color.argb(255, 33, 92, 110));
- if(list!=null&&list.size()>0){
- for(int i=0;i<size;i++){
- Map<String,Object> map = list.get(i);
- spannable.setSpan(foregroundColorSpan, (Integer)map.get("startIndex"), (Integer)map.get("endIndex"), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- }
- }
- return spannable;
- }
public static SpannableString decorateVipInStr(SpannableString spannable,List<Map<String,Object>> list,Resources resources){ int size = list.size(); Drawable drawable = null; if(list!=null&&list.size()>0){ for(int i=0;i<size;i++){ Map<String,Object> map = list.get(i); drawable = resources.getDrawable(R.drawable.vip); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight()); ImageSpan span = new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE); spannable.setSpan(span, (Integer)map.get("startIndex"), (Integer)map.get("endIndex"), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } return spannable; } public static SpannableString decorateTopicInStr(SpannableString spannable,List<Map<String,Object>> list,Resources resources){ int size = list.size(); Drawable drawable = null; CharacterStyle foregroundColorSpan=new ForegroundColorSpan(Color.argb(255, 33, 92, 110)); if(list!=null&&list.size()>0){ for(int i=0;i<size;i++){ Map<String,Object> map = list.get(i); spannable.setSpan(foregroundColorSpan, (Integer)map.get("startIndex"), (Integer)map.get("endIndex"), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } return spannable; }
http://helloandroid.iteye.com/blog/1136290
发表评论
-
Android客户端代码保护技术-完整性校验
2018-01-08 17:10 1252由于Android系统固有的缺陷、Android应用分发 ... -
android开发中手动v2签名实现方法
2018-01-08 10:31 999用v2签名前要进行v1签名或zipalign。 1. z ... -
webview支持LocalStorage本地存储
2017-03-31 10:30 1362//允许JavaScript执行 ... -
七步配置phonegap+cordova+ionic开发环境
2016-12-19 16:21 691本文讲的是Android混合 ... -
梆梆加固破解
2016-10-13 09:01 1500本文假设你已经使用过梆梆加固,手头至少有个一个通过梆梆加固后 ... -
android zxing 扫描二维码 横屏转竖屏
2016-09-14 15:41 0Zxing 竖屏切换 Android 在google上下 ... -
封装Volley使Volley的每个请求都自动保存和发送Cookie
2016-09-14 10:57 0思路很简单,每次请求获取到服务器返回的response就解 ... -
Android二维码ZXing扫描区域大小的调整,提高扫描速度
2016-09-14 10:48 2638Zxing本身默认的扫图区域最大只有 360*480 ... -
解决Android二维码扫描ZXing竖屏拉伸变长闪退扫描区域小等问题
2016-09-14 10:42 1222Android 基于google Zxing实现二维码、条形 ... -
Android平台下利用zxing实现二维码开发
2016-09-14 09:25 477现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研 ... -
Zxing扫描二维码
2016-09-14 09:24 653摘要 android Zxing扫描二维码 横竖屏 ... -
Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
2016-09-14 09:18 499转载请注明出处:http://blog.csdn.net/x ... -
React Native应用部署/热更新-CodePush最新集成总结
2016-08-02 11:06 563本文出自《React Native学习笔记》系列文章。 ... -
让微信二维码扫描您的APK
2016-07-27 11:26 1497二维码深入人心,很多App都在官网挂出了可以扫描下载apk的 ... -
Activity类的runOnUiThread方法
2016-07-22 10:40 765[javascript] view plain c ... -
Can't create handler inside thread that has not called Looper.prepare()
2016-07-22 10:24 625错误信息:在Android开发中,如果在一个Thread中启 ... -
Android编程之解决android-support-v4打包问题
2016-07-21 09:27 548如果工程引入了android-support-v4的jar类 ... -
Android 编程下的代码混淆之(android-support-v4.jar)
2016-07-21 09:24 392项目在代码混淆过程中如果引用了第三方 Jar 包,需要在混淆 ... -
phoneGap可行性分析
2016-07-20 16:25 5091 移动应用现状 移动应用产品往往常 ... -
梆梆SDKs详细分析(1) - 防界面劫持SDK
2016-07-20 10:23 746前言 前段时间,国外知名的安全公司fireeye发 ...
相关推荐
腾讯人脸识别多版本接口文档,需要的下载,本文只负责转摘,不做商业用途,需要的可以下载,里面涵盖腾讯人脸的多个文档,这个是我之前做的腾讯人脸项目所用到的,腾讯官方只给到在线版的,我就自己弄了个PDF
Eclipse中用SWT和JFace开发入门-转摘 .doc
android 布局参数中文注释说明 两张图片截图,仅对linerlayout 及RelativeLayout参数说明! 网络转摘!仅供学习!
有很多的朋友给自己硬盘新建分区都喜欢用第三方软件,我想原因是在XP系统下只能在安装系统时才能进行分区,一旦系统做好之后要想新建分区就必须使用三方软件才行。但到了Vista系统和现下的win7系统时,这个问题就变...
此种共享,不同于一般的内容转摘,而是在对方网站上显示来自另一方网站的文章标题和URL,访问者点击标题就直接进入来源网站进行阅读。因此对内容输出方来说,实现了同一内容多个发布平台,犹如在对方网站做文字链...
公司控制权之争及公司股权设计模式转摘.doc
新零售时代,小卖家如何迅速做出销量(转摘).zip
完全平方公式变形的应用练习题_2(转摘).doc
新零售时代,小卖家如何迅速做出销量(转摘).doc
新零售时代,小卖家如何迅速做出销量(转摘)-知识杂货店.doc
华为从事通信网络技术与产品的研究、开发、生产与销售,是中国电信市场的主要供应商之一,并已成功进入全球电信市场。每年华为都要在各大高校招聘大批的应界生,特别是华中科技大学。 下面据说是华为公司的笔试题...
一、开发环境:pb11.2 8669 二、pb的webservice程序必须置于英文目录下,含中文路径时部署会出错; 三、代码只要改一个地方: n_webservice对象的of_retrieve函数中 sqlca.logpass设置为你测试数据库的sa对应密码即可 四...
很多可能在转摘过程中失真或未经验证就被转摘,真正使用时却不行,也由此决定自己全方位试验一下,努力还是没有白费,虽然最终得出的结果是很简单的,但其过程对于一个新学AJAX的人来说,真是挺累。欢迎您在使用过程...
DataFactory 是一种快度的,易于产生测试数据的带有直觉用户接口的工具,它能建模复杂数据关系。在当今快速的开发环境中,应用程序的测试总是处于次要地位。DataFactory是一种强的的数据产生器,它允许开发人员和QA...
转摘:Microsoft Office Access(前名 Microsoft Access)是由微软发布的关联式数据库管理系统。它结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office的成员之一。 Access能够...
这个是我从网上找到的资料,现在共享给大家,希望能帮助到大家。
它启动速度快,可以完全代替Windows自带的记事本,足以胜任日常的文本编辑工作,而且良好地支持Unicode和中文字符,还支持20多种编程语言的语法突出显示。此专业版,增强了程序的编辑功能,使其更适合编程人员对...
和Emacs并列成为类Unix系统用户最喜欢的编辑器。Vim的第一个版本由Bram Moolenaar在1991年发布。最初的简称是Vi IMitation ,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的慈善...
本文为转摘的普及商事知识的笔记.md档,可以得到一些常识性的认知。从商业角度看,公司的最终目标无非就是赚钱,持续的赚钱,持续的赚更多的钱。为此划分了公司成长的三个阶段:产品阶段,规模扩张阶段,持续经营...
memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。Memcache是danga.com的一个项目,最早是...