欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-21 08:02:28
...
哈哈,通过VIP标志看到赵薇是冒牌的,李开复和冯小刚是正品。
Android腾讯微博客户端开发六:给用户加VIP认证以及美化微博显示内容
            
    
    博客分类: 腾讯微博客户端 Android 微博 加V TextView美化
##之间的内容是代表一个话题,@和:之间的是转发这条微博的人,也高亮显示,||代表上一次转发此微博的。url地址也高亮显示。

Android腾讯微博客户端开发六:给用户加VIP认证以及美化微博显示内容
            
    
    博客分类: 腾讯微博客户端 Android 微博 加V TextView美化
这个是什么组件啊?是TextView,不会吧?TextView能显示图片吗?肯定能呀。

Android腾讯微博客户端开发六:给用户加VIP认证以及美化微博显示内容
            
    
    博客分类: 腾讯微博客户端 Android 微博 加V 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());//高亮显示微薄转发,回复者昵称


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;
	}


  • Android腾讯微博客户端开发六:给用户加VIP认证以及美化微博显示内容
            
    
    博客分类: 腾讯微博客户端 Android 微博 加V TextView美化
  • 大小: 54.9 KB
  • Android腾讯微博客户端开发六:给用户加VIP认证以及美化微博显示内容
            
    
    博客分类: 腾讯微博客户端 Android 微博 加V TextView美化
  • 大小: 62.7 KB
  • Android腾讯微博客户端开发六:给用户加VIP认证以及美化微博显示内容
            
    
    博客分类: 腾讯微博客户端 Android 微博 加V TextView美化
  • 大小: 9.8 KB