Skip to content

RobertsChou/EmojiDemo

Repository files navigation

EmojiDemo

最近在做Android的评论加上表情,挺郁闷的,刚开始在网上找了下资源,发现大部分都是本地APP表情的展示,很少有通过网络之后在手机上显示表情的源码,后来在网上找了几份关于表情的代码,在此基础上进行了改进,最终解决了这个问题。

服务器是PHP,网络数据传输格式是json字符串,下面的简要的贴一下主要的代码:

需要注意的地方: 服务器端接收到的字段先解析不要直接使用json中的字段,然后再SetText,下面是接受服务器解析的方法,实际上就是去掉方括号的过程:

ArrayList contentSpanArr = new ArrayList();

public void transText(String s,TextView tv){
	contentSpanArr.clear();
	tv.setText("");
	sortClassify(s);
	for(int i=0;i<contentSpanArr.size();i++){
		String sa = contentSpanArr.get(i);
		if(sa.startsWith("[")){
			boolean hasEmo = false;
			int j;
			for(j=0;j<MsgFaceUtils.faceImgNames.length;j++){
				if(sa.equals(MsgFaceUtils.faceImgNames[j].trim())){
					hasEmo=true;
					SpannableString spannableString = EmojiParser.getInstance(context).addFace(context, MsgFaceUtils.faceImgs[j],
							MsgFaceUtils.faceImgNames[j]);
					tv.append(spannableString);
				}
			}
			if(!hasEmo){
				tv.append(sa);
			}
		}else{
			tv.append(sa);
		}
	}
}

public  void sortClassify(String s){
	if (s.contains("[")) {
		String a1 = s.substring(0,s.indexOf("["));
		if(a1!=null&&a1.length()>0){
			contentSpanArr.add(a1);
		}
		if(s.contains("]")){
			String z = s.substring(s.indexOf("["), s.indexOf("]")+1);
			contentSpanArr.add(z);
			String z1 = s.substring(s.indexOf("]")+1,s.length());
			sortClassify(z1);
		}else{
			contentSpanArr.add(s);
			return;
		}

	} else {
		contentSpanArr.add(s);
		return;
	}
}

其它需要朋友自己在安装上这个Demo试一下就知道了,这个例子没有服务器是一个本地的,上面那个方法用到网络时才会用到。

If you have issue ,please by email: [email protected]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages