如何在Android中使用emojicon库集成表情符号

最全最专业的emojicon库教程。

在本教程中,我们将学习如何通过一个简单的示例在Android应用程序中使用emojicon库集成  表情符号

步骤1

内容目录

1简介
2创建一个新项目
3添加支持库
4创建布局
5初始化EmojiconEditText和EmojiconTextView
6实现Emojicons单击Listener和Emojicons Back Space单击Listener
7添加文本更改侦听器
8在Fragment中设置表情符号
9最终代码

介绍

表情符号是键盘字符和符号的组合,表示面部表情,例如微笑或皱眉。在本教程中,我们将学习如何使用Android应用程序中的emojicon库集成表情符号。

创建一个新项目

在Android Studio中创建一个新项目,转到文件⇒新建⇒新项目

添加支持库

要集成表情符号,我们需要在项目中添加Emojicons库。因此,打开build.gradle文件并添加emojicons库作为依赖项。

1

2

3

4

5

dependencies {

  ....

    compile 'com.rockerhieu.emojicon:library:1.3.3'

  ....

}

创建布局

我们将在FrameLayout中添加表情符号。如果用户单击表情符号,它会在EditText中显示图标,并在TextView上显示EditText的输入。因此,我们需要在activity.xml文件中使用EmojiconEditTextEmojiconTextView元素。

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

三十

31

32

33

34

35

36

37

38

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    xmlns:emojicon="http://schemas.android.com/apk/res-auto"

    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="app.androidsmiles.MainActivity">

    <com.rockerhieu.emojicon.EmojiconTextView

        android:id="@+id/txtEmojicon"

        emojicon:emojiconAlignment="baseline"

        android:layout_width="match_parent"

        android:layout_height="wrap_content" />

    <com.rockerhieu.emojicon.EmojiconEditText

        android:id="@+id/editEmojicon"

        android:hint="Type emoji here"

        emojicon:emojiconSize="28sp"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_below="@+id/txtEmojicon"

        android:layout_alignParentRight="true"

        android:layout_alignParentEnd="true" />

    <FrameLayout

        android:id="@+id/emojicons"

        android:layout_width="match_parent"

        android:layout_height="fill_parent"

        android:layout_below="@+id/editEmojicon"

        android:layout_alignParentRight="true"

        android:layout_alignParentEnd="true"

        android:layout_marginTop="38dp" />

</RelativeLayout>

第5步

初始化EmojiconEditText和EmojiconTextView

要使用EmojiconEditTextEmojiconTextVew的属性,我们需要在onCreate()方法中初始化EmojiconEditText和EmojiconTextVew。

1

2

3

4

6

7

8

9

10

11

12

13

14

15

public class MainActivity extends AppCompatActivity {

    EmojiconEditText mEditEmojicon;

    EmojiconTextView mTxtEmojicon;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        // initialize EmojicobEditText and EmojiconTextView.

        mEditEmojicon = (EmojiconEditText) findViewById(R.id.editEmojicon);

        mTxtEmojicon = (EmojiconTextView) findViewById(R.id.txtEmojicon);

    }

}

第6步

实现Emojicons单击Listener和Emojicons Back Space单击Listener

我们将在MainActivity.java文件中实现点击监听器和后退空间单击Emojicons的监听器,以在EditText中添加和删除图标。这些监听器提供onEmojiconClicked()onEmojiconBackspaceClicked()方法来处理表情符号。

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

三十

31

32

33

34

35

36

public class MainActivity extends AppCompatActivity implements EmojiconGridFragment.OnEmojiconClickedListener,

        EmojiconsFragment.OnEmojiconBackspaceClickedListener {

    EmojiconEditText mEditEmojicon;

    EmojiconTextView mTxtEmojicon;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        // initialize EmojicobEditText and EmojiconTextView.

        mEditEmojicon = (EmojiconEditText) findViewById(R.id.editEmojicon);

        mTxtEmojicon = (EmojiconTextView) findViewById(R.id.txtEmojicon);

    }

    /**

     * It called, when click on icon of Emoticons.

     * @param emojicon

     */

    @Override

    public void onEmojiconClicked(Emojicon emojicon) {

        EmojiconsFragment.input(mEditEmojicon, emojicon);

    }

    /**

     * It called, when click on backspace button of Emoticons.

     * @param view

     */

    @Override

    public void onEmojiconBackspaceClicked(View view) {

        EmojiconsFragment.backspace(mEditEmojicon);

    }

}

第7步

添加文本更改侦听器

我们需要从EditText中收听文本更改。我们将调用addTextChangedListener()方法并传递TextWatcher对象。TextWatcher对象需要添加beforeTextChanged()afterTextChanged()onTextChanged()来侦听EditText中的文本更改。

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

三十

31

32

33

34

mEditEmojicon.addTextChangedListener(new TextWatcher() {

            /**

             * This notify that, within s,

             * the count characters beginning at start are about to be replaced by new text with length

             * @param s

             * @param start

             * @param count

             * @param after

             */

            @Override

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

            /**

             * This notify that, somewhere within s, the text has been changed.

             * @param s

             */

            @Override

            public void afterTextChanged(Editable s) {}

            /**

             * This notify that, within s, the count characters beginning at start have just

             * replaced old text that had length

             * @param s

             * @param start

             * @param before

             * @param count

             */

            @Override

            public void onTextChanged(CharSequence s, int start, int before, int count) {

                // Set text on TextView

                mTxtEmojicon.setText(s);

            }

        });

第8步

在Fragment中设置表情符号

现在,我们需要通过调用getSupportFragmentManager()方法在片段中设置表情符号。此方法返回FragmentManager以与与此活动关联的EmojiconsFragment进行交互  。

1

2

3

4

6

7

8

9

10

11

/**

 * Set the Emoticons in Fragment.

 * @param useSystemDefault

 */

 private void setEmojiconFragment(boolean useSystemDefault) {

     getSupportFragmentManager()

             .beginTransaction()

             .replace(R.id.emojicons, EmojiconsFragment.newInstance(useSystemDefault))

             .commit();

 }

第9步

最终代码

这是最终的代码:

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

三十

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

public class MainActivity extends AppCompatActivity implements EmojiconGridFragment.OnEmojiconClickedListener,

        EmojiconsFragment.OnEmojiconBackspaceClickedListener {

    EmojiconEditText mEditEmojicon;

    EmojiconTextView mTxtEmojicon;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        // initialize EmojicobEditText and EmojiconTextView.

        mEditEmojicon = (EmojiconEditText) findViewById(R.id.editEmojicon);

        mTxtEmojicon = (EmojiconTextView) findViewById(R.id.txtEmojicon);

        mEditEmojicon.addTextChangedListener(new TextWatcher() {

            /**

             * This notify that, within s,

             * the count characters beginning at start are about to be replaced by new text with length

             * @param s

             * @param start

             * @param count

             * @param after

             */

            @Override

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

            /**

             * This notify that, somewhere within s, the text has been changed.

             * @param s

             */

            @Override

            public void afterTextChanged(Editable s) {}

            /**

             * This notify that, within s, the count characters beginning at start have just

             * replaced old text that had length

             * @param s

             * @param start

             * @param before

             * @param count

             */

            @Override

            public void onTextChanged(CharSequence s, int start, int before, int count) {

                mTxtEmojicon.setText(s);

            }

        });

        setEmojiconFragment(false);

    }

    /**

     * Set the Emoticons in Fragment.

     * @param useSystemDefault

     */

    private void setEmojiconFragment(boolean useSystemDefault) {

        getSupportFragmentManager()

                .beginTransaction()

                .replace(R.id.emojicons, EmojiconsFragment.newInstance(useSystemDefault))

                .commit();

    }

    /**

     * It called, when click on icon of Emoticons.

     * @param emojicon

     */

    @Override

    public void onEmojiconClicked(Emojicon emojicon) {

        EmojiconsFragment.input(mEditEmojicon, emojicon);

    }

    /**

     * It called, when backspace button of Emoticons pressed

     * @param view

     */

    @Override

    public void onEmojiconBackspaceClicked(View view) {

        EmojiconsFragment.backspace(mEditEmojicon);

    }

}

如何在Android中使用emojicon库集成表情符号, 妈妈在也不用担心我的表情了~~~相关推荐

  1. android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测

    如何在Android中利用 GestureDetector进行手势检测 发布时间:2020-11-26 16:15:21 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关如何在Andro ...

  2. android 显示进度,progressdialog-如何在Android中显示进度对话框?

    progressdialog-如何在Android中显示进度对话框? 当我单击"登录"按钮时,我想显示ProgressDialog,这需要时间才能移动到另一个页面. 我怎样才能做到 ...

  3. 如何在Vscode中安装Python库

    如何在vscode中安装python库 1.已经在vscode中装了python并配置好python运行环境. 检查是否正确配置好运行环境,按Windows+R组合键在运行窗口输入cmd,打开命令提示 ...

  4. 如何在android中创建自定义对话框?

    本文翻译自:How to create a Custom Dialog box in android? I want to create a custom dialog box like below ...

  5. android 定时器5秒执行一次,如何在android中每30秒执行一次查询?

    我有一个查询,我想每30秒执行一次并将其记录到Logcat.我是通过处理程序完成的,我没有得到回应.如何在android中每30秒执行一次查询? 这里是我的代码: runnable = new Run ...

  6. 让一个图片填满一个控件_如何在Android中实现一个全景图控件(二)

    一.背景 在 如何在Android中实现一个全景图控件(一)中,介绍了项目的一些基本情况(有 demo 演示),如果项目对你有帮助,希望文章赏个赞,项目 star 一下. 项目地址:https://g ...

  7. android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能

    如何在Android中利用Intent实现一个页面跳转功能 发布时间:2021-02-20 17:06:31 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了如何在Android中利用 ...

  8. 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决

    在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决 参考文章: (1)在Android中调用KSOAP2库访问webservice服务出现的服务端 ...

  9. android中fragment如何保存edittext文本,如何在Android中使用DialogFragment进行文本输入?...

    我想获得一个值,用户输入到一个对话框,使用建议的DialogFragment类为它,对话框构造和运行良好,但我不能返回EditText参数的值父类,没有得到一个空值指针异常.如何在Android中使用 ...

最新文章

  1. 如何为模型选择合适的损失函数?所有ML学习者应该知道的5种回归损失函数
  2. 那些年,我们一起追过的恺明大神!
  3. linux内存管理简介,Linux内存管理机制简介
  4. 二分法变种小结(leetcode 34、leetcode33、leetcode 81、leetcode 153、leetcode 74)
  5. 致准医学博士生的乘风破浪秘籍
  6. 查看mysql日志post_(转)MySQL 日志组提交
  7. python从excel中读取数据
  8. 求职攻略 | Datawhale助力秋招最强战甲
  9. maven项目在pom.xml中设置JDK编译版本
  10. HDOJ---1232 畅通工程[并查集]
  11. 听说你在生产环境下还没关闭Swagger2,算你猛
  12. 根据开始日期和结束日期获取基金的当天净值,并计算收益率
  13. 有时,不做什么比做什么更重要,拒绝比答应更重要
  14. Win11更新补丁导致应用程序崩溃错误代码0xc0000135怎么解决?
  15. 一元、二元函数图像绘制
  16. macos系统镜像iso_Windows10操作系统iso镜像、微软正版软件下载站:MSDN,我告诉你...
  17. JavaSE之异常处理
  18. 排查服务器异常流量保姆级教程
  19. STM32 最小系统电路简析
  20. 分位数回归的实现方法

热门文章

  1. 铁路计算机应用 核心,铁路高级职称论文发表核心期刊有哪些
  2. vue vlc插件的使用
  3. 如何让用户感知产品的价值?
  4. 使用metamask获得测试网ETH
  5. 与 Kubernetes 共存:调试工作负载的 12 个命令
  6. 计算机网络技术色盲可以报吗,高考体检出色盲报考会受限 这里告诉你
  7. vue实现超链接跳转 加平滑过度
  8. 商淘软件IM客服系统 即时对话客服系统 客服互动
  9. 小学机器人编程是学的什么
  10. Matlab配置libsvm并实现官方教程