Android以编程方式插入表情符号

时间:2016-02-25 15:50:14

标签: android utf-8 emoji

我正在尝试以一种方式实现表情符号,我会自动用等效的表情符号替换“:)”之类的东西。而且我不确定该怎么做,我找到了一个表情符号UTF代码表,但我不确定我应该如何以编程方式将它们放入EditText:/

 inputField=(EditText)temp.findViewById(R.id.inputField);
    inputField.addTextChangedListener(new TextWatcher() {
        boolean justChanged=false;
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(justChanged) {
                justChanged=false;
                return;
            }
            Log.d(s.toString(), s.toString());
            if(s.toString().contains(":)")) {
                justChanged=true;
               inputField.setText(s.toString().replace(":)", "UTF CODE HERE?"));
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

1 个答案:

答案 0 :(得分:2)

最简单的方法是将源代码编码为UTF-8,并将所需的表情符号粘贴到代码中。然后,您需要将-encoding UTF-8传递给javac。然后,表情符号将在编译时转换为其Unicode点。

E.g。

inputField.setText(s.toString().replace(":)", ""));

或者,您可以使用\uXXXX表示法在Java字符串中使用UTF-16 Unicode点文字。从合适的Unicode引用站点(例如http://www.fileformat.info/info/unicode/block/emoticons/list.htm),您可以获得UTF-16类型编码或完整的Java转义序列。

E.g。

inputField.setText(s.toString().replace(":)", "\uD83D\uDE00"));