• Android腾讯微博客户端开发六:给用户加VIP认证以及美化微博显示内容


    哈哈,通过VIP标志看到赵薇是冒牌的,李开复和冯小刚是正品。 
     
    ##之间的内容是代表一个话题,@和:之间的是转发这条微博的人,也高亮显示,||代表上一次转发此微博的。url地址也高亮显示。 

     
    这个是什么组件啊?是TextView,不会吧?TextView能显示图片吗?肯定能呀。 

     

    主要是用到了SpannableString,ForegroundColorSpan,ImageSpan这3个类. 

    Java代码  收藏代码
    1. String origtext = data.getString("origtext");  
    2.                     SpannableString spannable = new SpannableString(origtext);  
    3.                       
    4.                     spannable = TextUtil.decorateFaceInStr(spannable, RegexUtil.getStartAndEndIndex(origtext, Pattern.compile("\\/[\u4e00-\u9fa5a-zA-Z]{1,3}")), getResources());//解析成本地表情  
    5.                     spannable = TextUtil.decorateRefersInStr(spannable, RegexUtil.getStartAndEndIndex(origtext, Pattern.compile("@.*:")), getResources());//高亮显示微薄转发,回复者昵称  


    Java代码  收藏代码
    1. public static List<Map<String,Object>> getStartAndEndIndex(String sourceStr,Pattern pattern){  
    2.         List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();  
    3.         Matcher matcher = pattern.matcher(sourceStr);  
    4.         boolean isFind = matcher.find();  
    5.         while (isFind) {  
    6.             Map<String,Object> map = new HashMap<String, Object>();  
    7.             String faceName = matcher.group().substring(1,matcher.group().length());//表情名称  
    8.             map.put("startIndex",matcher.start());  
    9.             map.put("endIndex",matcher.end());  
    10.             map.put("faceName",faceName);  
    11.             list.add(map);  
    12.             isFind = matcher.find((Integer)map.get("endIndex")-1);  
    13.         }  
    14.         return list;  
    15.     }  

    Java代码  收藏代码
    1. public static SpannableString decorateVipInStr(SpannableString spannable,List<Map<String,Object>> list,Resources resources){  
    2.         int size = list.size();  
    3.         Drawable drawable = null;  
    4.         if(list!=null&&list.size()>0){  
    5.             for(int i=0;i<size;i++){  
    6.                 Map<String,Object> map = list.get(i);  
    7.                 drawable = resources.getDrawable(R.drawable.vip);  
    8.                 drawable.setBounds(00, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());  
    9.                 ImageSpan span = new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE);  
    10.                 spannable.setSpan(span, (Integer)map.get("startIndex"), (Integer)map.get("endIndex"), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    11.             }  
    12.         }  
    13.         return spannable;  
    14.     }  
    15.       
    16.     public static SpannableString decorateTopicInStr(SpannableString spannable,List<Map<String,Object>> list,Resources resources){  
    17.         int size = list.size();  
    18.         Drawable drawable = null;  
    19.         CharacterStyle foregroundColorSpan=new ForegroundColorSpan(Color.argb(2553392110));  
    20.         if(list!=null&&list.size()>0){  
    21.             for(int i=0;i<size;i++){  
    22.                 Map<String,Object> map = list.get(i);  
    23.                 spannable.setSpan(foregroundColorSpan, (Integer)map.get("startIndex"), (Integer)map.get("endIndex"), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    24.             }  
    25.         }  
    26.         return spannable;  
    27.     }  


  • 相关阅读:
    剑指OFFER之复杂链表的复制(九度OJ1524)
    剑指OFFER之二叉树中和为某一值的路径(九度OJ1368)
    剑指OFFER之从二叉搜索树的后序遍历序列(九度OJ1367)
    剑指OFFER之从上往下打印二叉树(九度OJ1523)
    剑指OFFER之栈的压入、弹出序列(九度OJ1366)
    剑指OFFER之包含min函数的栈(九度OJ1522)
    剑指OFFER之顺时针打印矩阵(九度OJ1391)
    剑指OFFER之树的子结构(九度OJ1520)
    剑指OFFER之二叉树的镜像(九度OJ1521)
    VM安装CentOs7虚拟机后无法上网之解决方法
  • 原文地址:https://www.cnblogs.com/afly/p/2360240.html
Copyright © 2020-2023  润新知