美文网首页自定义ViewAndroid知识Android开发
Android 如何简单集成 Emoji 键盘

Android 如何简单集成 Emoji 键盘

作者: 极小光 | 来源:发表于2017-03-22 18:40 被阅读328次
    Hi

    简评:使用一个库,简单的几个步骤,就能为你的 Android 应用集成好 Emoji 键盘啦。

    现在 Emoji 已经快成了世界通用语言,各种聊天应用也都纷纷支持起了 Emoji。今天这里就介绍下如何简简单单就集成 Emoji 键盘。

    首先我们使用 SuperNova-Emoji 这个库。

    使用 hani.momanii.supernova_emoji_library.Helper.EmojiconEditText 而不是 EditText 作为输入框:

    <hani.momanii.supernova_emoji_library.Helper.EmojiconEditText
        android:id="@+id/emojicon_edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        emojicon:emojiconSize="28sp" />
    

    EmojiconTextView 来展示消息:

    <hani.momanii.supernova_emoji_library.Helper.EmojiconTextView
        android:id="@+id/emojicon_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        emojicon:emojiconSize="28sp"/>
    

    修改调出 emoji 键盘的按钮图标:

    rootView = findViewById(R.id.root_view);
    emojiconEditText = (EmojiconEditText) findViewById(R.id.emojicon_edit_text);
    textView = (EmojiconTextView) findViewById(R.id.textView);
    emojiIcon = new EmojIconActions(this, rootView, emojiconEditText, emojiImageView);
    emojiIcon.ShowEmojIcon();
    emojiIcon.setIconsIds(R.drawable.ic_action_keyboard,R.drawable.smiley);
    
    看,出来了

    还能根据应用的配色来自定义颜色:

    EmojIconActions emojIcon= new EmojIconActions(this, rootView, emojiconEditText, emojiImageView,
    "#F44336","#e8e8e8","#f4f4f4");
     
    
    emojIcon.ShowEmojIcon();
    
    
    玩起来

    完整的示例代码:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:emojicon="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/root_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="info.androidhive.emojis.MainActivity">
     
        <ImageView
            android:id="@+id/emoji_btn"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:padding="4dp"
            android:src="@drawable/ic_insert_emoticon_black_24dp" />
     
        <ImageView
            android:id="@+id/submit_btn"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:padding="4dp"
            android:src="@android:drawable/ic_menu_send" />
     
        <hani.momanii.supernova_emoji_library.Helper.EmojiconEditText
            android:id="@+id/emojicon_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_toLeftOf="@id/submit_btn"
            android:layout_toRightOf="@id/emoji_btn"
            emojicon:emojiconSize="28sp" />
     
     
        <CheckBox
            android:id="@+id/use_system_default"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView"
            android:layout_centerHorizontal="true"
            android:checked="false"
            android:text="Use System Default?" />
     
        <hani.momanii.supernova_emoji_library.Helper.EmojiconTextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_marginTop="26dp"
            android:text="Hello Emojis!"
            android:textAppearance="@style/TextAppearance.AppCompat.Large"
            android:textColor="#000000"
            emojicon:emojiconSize="45sp"
            emojicon:emojiconUseSystemDefault="true" />
    </RelativeLayout>
    
    public class MainActivity extends AppCompatActivity {
     
        private static final String TAG = MainActivity.class.getSimpleName();
    
        CheckBox mCheckBox;
        EmojiconEditText emojiconEditText;
        EmojiconTextView textView;
        ImageView emojiImageView;
        ImageView submitButton;
        View rootView;
        EmojIconActions emojIcon;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            rootView = findViewById(R.id.root_view);
            emojiImageView = (ImageView) findViewById(R.id.emoji_btn);
            submitButton = (ImageView) findViewById(R.id.submit_btn);
            mCheckBox = (CheckBox) findViewById(R.id.use_system_default);
            emojiconEditText = (EmojiconEditText) findViewById(R.id.emojicon_edit_text);
            textView = (EmojiconTextView) findViewById(R.id.textView);
            emojIcon = new EmojIconActions(this, rootView, emojiconEditText, emojiImageView);
            emojIcon.ShowEmojIcon();
            emojIcon.setIconsIds(R.drawable.ic_action_keyboard, R.drawable.smiley);
            emojIcon.setKeyboardListener(new EmojIconActions.KeyboardListener() {
                @Override
                public void onKeyboardOpen() {
                    Log.e(TAG, "Keyboard opened!");
                }
     
                @Override
                public void onKeyboardClose() {
                    Log.e(TAG, "Keyboard closed");
                }
            });
     
            mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                    emojIcon.setUseSystemEmoji(b);
                    textView.setUseSystemDefault(b);
     
                }
            });
     
     
            submitButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String newText = emojiconEditText.getText().toString();
                    textView.setText(newText);
                }
            });
        }
    }
    

    运行效果:


    嘿嘿嘿

    原文:Android How to Integrate Emojis Keyboard in your App

    日报延伸阅读

    欢迎关注

    • 知乎专栏「极光日报」,每天为 Makers 导读三篇优质英文文章。
    • 网易云电台「极光日报**」,上下班路上为你读报。

    相关文章

      网友评论

        本文标题:Android 如何简单集成 Emoji 键盘

        本文链接:https://www.haomeiwen.com/subject/qoxanttx.html