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


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


 


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


Java代码  
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());//高亮显示微薄转发,回复者昵称


Java代码  
public static List> getStartAndEndIndex(String sourceStr,Pattern pattern){   
        List> list = new ArrayList>();   
        Matcher matcher = pattern.matcher(sourceStr);   
        boolean isFind = matcher.find();   
        while (isFind) {   
            Map map = new HashMap();   
            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> getStartAndEndIndex(String sourceStr,Pattern pattern){
List> list = new ArrayList>();
Matcher matcher = pattern.matcher(sourceStr);
boolean isFind = matcher.find();
while (isFind) {
Map map = new HashMap();
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;
}
Java代码  
public static SpannableString decorateVipInStr(SpannableString spannable,List> list,Resources resources){   
        int size = list.size();   
        Drawable drawable = null;   
        if(list!=null&&list.size()>0){   
            for(int i=0;i                 Map 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> 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                 Map map = list.get(i);   
                spannable.setSpan(foregroundColorSpan, (Integer)map.get("startIndex"), (Integer)map.get("endIndex"), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);   
            }   
        }   
        return spannable;   
    }  


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部