表情符号选择器

表情符号选择器是一个界面解决方案,可提供最新的现代外观和风格 表情符号和易用性用户可以浏览并选择表情符号及其变体 也可以选择最近用过的表情符号

图 1. 表情符号选择器

借助此库,各种来源的应用可以提供包容性和 为用户提供统一的表情符号体验,而无需开发者 和维护自己的表情符号选择器。

功能

最新表情符号

新发布的表情符号会选择性地添加到表情符号选择器中。通过 表情符号选择器库与多个 Android 版本和 设备。

粘性变体

长按某个表情符号即可显示变体菜单,例如不同的 性别或肤色。您选择的变体会保存在表情符号选择器中, 主面板中会使用最后选择的变体。

借助此功能,用户可以通过一个选项来发送自己喜欢的表情符号变体 点按。

<ph type="x-smartling-placeholder">
</ph> 表情符号变体 <ph type="x-smartling-placeholder">
</ph> 图 2.表情符号变体

最近用过的表情符号

<ph type="x-smartling-placeholder">
</ph> 最近用过的表情符号 <ph type="x-smartling-placeholder">
</ph> 图 3.最近用过的表情符号

RecentEmojiProvider 负责在 最近用过类别。该库包含一个默认最近用过的表情符号提供程序 可满足最常见的用例要求:

  • 所有选定的表情符号都会按应用保存在共享偏好设置中。
  • 选择器最多可显示 3 行所选表情符号(经过去重处理或反向排序) 按时间顺序排列。

如果此默认行为已经足够,则您无需使用 setRecentEmojiProvider()

不过,您可能需要自定义提供程序的行为。以下是一些 常见情况:

  • 您想要为每个用户账号存储所选的不同表情符号。
  • 您想使用共享偏好设置以外的数据存储空间。
  • 您想要显示按频率排序的最近用过的表情符号。

然后,您可以实现 RecentEmojiProvider 接口,并使用以下代码对其进行设置: setRecentEmojiProvider()

EmojiCompat 的兼容性

启用后,系统会在表情符号选择器中使用 EmojiCompat 实例 呈现尽可能多的表情符号表情符号选择器无需 不过,EmojiCompat

前提条件

您的应用必须以 Android 5.0(API 级别 21)或更高版本为目标平台。

使用库

  1. 在应用的 build.gradle 中导入 androidx.emoji2:emojipicker:$version 文件。

    dependencies {
        implementation "androidx.emoji2:emojipicker:$version"
    }
    
  2. 膨胀表情符号选择器视图,并视需要设置 emojiGridRowsemojiGridColumns

    • emojiGridColumns 的默认数量为 9。
    • 行数是根据父视图高度和 emojiGridColumns
    • emojiGridRows 使用浮点值,以指明用户可以 向下滚动可查看更多表情符号
    <androidx.emoji2.emojipicker.EmojiPickerView
        android:id="@+id/emoji_picker"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:emojiGridColumns="9" />
    
    val emojiPickerView = EmojiPickerView(context).apply {
        emojiGridColumns = 15
        layoutParams = ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT
        )
    }
    
    findViewById<ViewGroup>(R.id.emoji_picker_layout).addView(emojiPickerView)
    
  3. 使用 setOnEmojiPickedListener() 将所选表情符号附加到视图。 例如,如需附加到 EditText,请执行以下操作:

    emojiPickerView.setOnEmojiPickedListener {
        findViewById<EditText>(R.id.edit_text).append(it.emoji)
    }
    
  4. 可以选择设置 RecentEmojiProvider,如需查看示例,请参阅示例应用 实施。

  5. (可选)自定义样式。创建自己的样式以覆盖常见主题 并将相应样式应用于 EmojiPickerView。例如: 替换 colorControlNormal 会更改类别图标颜色。

    <style name="CustomStyle" >
        <item name="colorControlNormal">#FFC0CB</item>
    </style>
    <androidx.emoji2.emojipicker.EmojiPickerView
        android:id="@+id/emoji_picker"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:theme="@style/CustomStyle"
        app:emojiGridColumns="9" />
    

示例应用

表情符号选择器示例应用演示了基本用例以及 以下额外情景:

  • emojiGridRowsemojiGridColumns 重置时重新计算布局。
  • 一个被替换的近期表情符号提供程序(按频率排序)。
  • 其他样式自定义功能。