表情符号选择器是一种 UI 解决方案,它提供现代的外观和感觉、最新的表情符号以及易用性。用户可以浏览和选择表情符号及其变体,或从他们最近使用过的表情符号中进行选择。
借助此库,来自各种来源的应用可以为其用户提供包容且统一的表情符号体验,而无需开发者从头开始构建和维护自己的表情符号选择器。
功能
最新的表情符号
表情符号选择器中选择性地包含了新发布的表情符号。表情符号选择器库与多个 Android 版本和设备兼容。
粘性变体
长按表情符号以显示变体菜单,例如不同的性别或肤色。您选择的变体将保存在表情符号选择器中,并且最后选择的变体将在主面板中使用。
使用此功能,用户只需轻触一下即可发送他们首选的表情符号变体。
最近使用的表情符号
RecentEmojiProvider
负责提供“最近使用”类别中的表情符号。该库有一个默认的最近使用表情符号提供程序,它满足最常见的用例
- 所有选定的表情符号都按应用保存在共享首选项中。
- 选择器最多显示 3 行选定的表情符号(已去重),按时间顺序反向排序。
如果此默认行为足够,那么您不需要使用 setRecentEmojiProvider()
。
但是,您可能需要自定义提供程序的行为。以下是一些常见场景
- 您希望为每个用户帐户存储不同的选定表情符号。
- 您希望使用除共享首选项之外的数据存储。
- 您希望按频率显示最近使用的表情符号。
然后,您可以实现 RecentEmojiProvider
接口,并使用 setRecentEmojiProvider()
设置它。
与 EmojiCompat
的兼容性
如果已启用,则在表情符号选择器中使用 EmojiCompat
实例来尽可能多地渲染表情符号。但是,表情符号选择器不需要 EmojiCompat
。
先决条件
您的应用必须面向 Android 5.0(API 级别 21)或更高版本。
使用该库
在应用的
build.gradle
文件中导入androidx.emoji2:emojipicker:$version
。dependencies { implementation "androidx.emoji2:emojipicker:$version" }
膨胀表情符号选择器视图,并可选地设置
emojiGridRows
和emojiGridColumns
。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)
使用
setOnEmojiPickedListener()
将选定的表情符号追加到视图中。例如,要追加到EditText
,请执行以下操作emojiPickerView.setOnEmojiPickedListener { findViewById<EditText>(R.id.edit_text).append(it.emoji) }
可选地设置
RecentEmojiProvider
,请参阅示例应用以了解实现示例。可选地自定义样式。创建您自己的样式以覆盖常见的主题属性,并将样式应用于
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" />
示例应用
表情符号选择器示例应用 演示了基本用例以及以下其他场景
- 重置
emojiGridRows
或emojiGridColumns
时重新计算布局。 - 一个覆盖的最近使用表情符号提供程序,按频率排序。
- 其他样式自定义。