您的位置:首页 > 其它

匹配emoji

2016-03-24 16:32 330 查看
edittext.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
setEditTextStyle();
if (count >= 2) {// 表情符号的字符长度最小为2
CharSequence input = s.subSequence(cursorPos, cursorPos
+ count);
if (Helper.containsEmoji(input.toString())) {
}
}
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
cursorPos = et_barrage.getSelectionEnd();
}

@Override
public void afterTextChanged(Editable s) {

}
});

/**

* 检测是否有emoji表情

* @param source
* @return
*/
public static boolean containsEmoji(String source) {
int len = source.length();
for (int i = 0; i < len; i++) {
char codePoint = source.charAt(i);
if (!isEmojiCharacter(codePoint)) { // 如果不能匹配,则该字符是Emoji表情
return true;
}
}
return false;
}

/**
* 判断是否是Emoji

* @param codePoint
*            比较的单个字符
* @return
*/
private static boolean isEmojiCharacter(char codePoint) {
return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA)
|| (codePoint == 0xD)
|| ((codePoint >= 0x20) && (codePoint <= 0xD7FF))
|| ((codePoint >= 0xE000) && (codePoint <= 0xFFFD))
|| ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));

}

字数限制设置:

editText.setFilters(new InputFilter[]{newInputFilter.LengthFilter(100)});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: