Emoji2
最新更新 | 稳定版 | 候选版本 | Beta 版本 | Alpha 版本 |
---|---|---|---|---|
2024 年 9 月 4 日 | 1.5.0 | - | - | - |
声明依赖项
要添加对 Emoji2 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读Google 的 Maven 存储库以了解更多信息。
在应用或模块的build.gradle
文件中添加所需构件的依赖项
Groovy
dependencies { def emoji2_version = "1.5.0" implementation "androidx.emoji2:emoji2:$emoji2_version" implementation "androidx.emoji2:emoji2-views:$emoji2_version" implementation "androidx.emoji2:emoji2-views-helper:$emoji2_version" }
Kotlin
dependencies { val emoji2_version = "1.5.0" implementation("androidx.emoji2:emoji2:$emoji2_version") implementation("androidx.emoji2:emoji2-views:$emoji2_version") implementation("androidx.emoji2:emoji2-views-helper:$emoji2_version") }
有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中现有的问题。您可以通过点击星形按钮为现有问题添加您的投票。
有关更多信息,请参阅问题跟踪器文档。
Emoji2 Emojipicker 版本 1.0
版本 1.0.0-alpha03
2023 年 3 月 8 日
androidx.emoji2:emoji2-emojipicker:1.0.0-alpha03
已发布。版本 1.0.0-alpha03 包含以下提交。
错误修复
- 删除了不必要的资源,并将库大小减少了约 0.3M。
版本 1.0.0-alpha02
2023 年 2 月 22 日
androidx.emoji2:emoji2-emojipicker:1.0.0-alpha02
已发布。版本 1.0.0-alpha02 包含以下提交。
API 更改
- 添加了新的 API,供 Java 客户端能够提供最近的表情符号。(I39d10)
错误修复
- 更新表情符号资源以支持表情符号 15.0(Ib4eb3)
- 从弹出窗口中选择表情符号时,更新所有相同的表情符号为新选择的表情符号(最近使用的表情符号行除外)。单击时也宣布表情符号。(I892c6)
- 在显示
EmojiPickerView
之前等待 emojicompat 加载。(I29e03)
版本 1.0.0-alpha01
2023年1月25日
androidx.emoji2:emoji2-emojipicker:1.0.0-alpha01
已发布。版本 1.0.0-alpha01 包含这些提交。
新功能
- 引入了一个表情符号选择器,它为 Android 操作系统 OEM 设备和应用程序提供了最新的表情符号一致的用户体验。它提供了最新的表情符号支持和表情符号选择器 UI,包括肤色变体和表情符号兼容性支持。
API 更改
- 引入了
EmojiPickerView
类,该类在一个带有可点击水平标题的垂直可滚动视图中提供最新的表情符号。 - 表情符号选择器网格列可以通过 XML 属性
emojiGridColumns
或函数setEmojiGridColumns()
设置。 - 表情符号选择器网格行可以通过 XML 属性
emojiGridRows
或函数setEmojiGridRows()
设置。 - 表情符号选择监听器可以通过
setOnEmojiPickedListener()
设置,并且每当用户点击任何表情符号时都会通知监听器。 - 最近使用的表情符号提供程序可以通过
setRecentEmojiProvider()
提供。这是一个可选函数。如果未设置最近使用的表情符号提供程序,库将使用默认的最近使用的表情符号提供程序。默认行为定义如下:1) 所有选择的表情符号都将保存在共享首选项的每个应用程序级别。2) 选择器最多显示 3 行选择的表情符号(去重),按时间倒序排列。 - 引入了
EmojiViewItem
类,该类保存显示的表情符号及其表情符号变体。 - 引入了
RecentEmojiProvider
接口,可以实现该接口以提供最近使用的表情符号列表。recentEmojiProvider
负责在“最近使用”类别中提供表情符号。
版本 1.5
版本 1.5.0
2024 年 9 月 4 日
androidx.emoji2:emoji2-*:1.5.0
已发布。版本 1.5.0 包含 这些提交。
自 1.4.0 以来重要的更改
- 支持表情符号 15.1 和双向表情符号选择器 UI。只需点击双向切换器,用户即可在表情符号的左右版本之间切换。
- 支持多肤色表情符号选择器。长按情侣表情符号会显示零状态的多人表情符号选择器。当用户点击表情符号的左侧一半时,右下角的表情符号预览将相应更新。当用户选择表情符号的两半时,右下角的表情符号预览将显示整个表情符号,然后用户可以输入它。
版本 1.5.0-rc01
2024年8月21日
androidx.emoji2:emoji2-*:1.5.0-rc01
已发布。版本 1.5.0-rc01 包含 这些提交。
新功能
- 支持表情符号 15.1 和双向表情符号选择器 UI。只需点击双向切换器,用户即可在表情符号的左右版本之间切换。
- 支持多肤色表情符号选择器。长按情侣表情符号会显示零状态的多人表情符号选择器。当用户点击表情符号的左侧一半时,右下角的表情符号预览将相应更新。当用户选择表情符号的两半时,预览将显示整个表情符号,然后用户可以输入它。
错误修复
- 删除了对新平台 API 的手动访问概述,因为当使用 AGP 7.3 或更高版本(例如 R8 版本 3.3)的 R8 以及当使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)的所有构建时,这会通过 API 建模自动发生。建议未使用 AGP 的客户端更新到 D8 版本 8.1 或更高版本。有关更多详细信息,请参阅 本文。(If6b4c,b/345472586)
EmojiPickerView
的选项卡选择和指示器更新滞后于一次点击。(146b02,b/288261054)EmojiPickerView
的选项卡选择和指示器已损坏。(5e1f14,b/273883688)
版本 1.5.0-beta01
2024年7月10日
androidx.emoji2:emoji2-*:1.5.0-beta01
已发布。版本 1.5.0-beta01 包含 这些提交。
新功能
- 支持表情符号 15.1 和双向表情符号选择 UI。
- 支持多肤色选择重新设计。
错误修复
EmojiPickerView
的选项卡选择和指示器更新滞后于一次点击。(146b02,b/288261054)EmojiPickerView
的选项卡选择和指示器已损坏。(5e1f14,b/273883688)
版本 1.5.0-alpha01
2023年12月13日
androidx.emoji2:emoji2-*:1.5.0-alpha01
已发布。版本 1.5.0-alpha01 包含这些提交。
新功能
emoji2-bundled
包含更新的表情符号字体以支持表情符号 15.1。
API 更改
版本 1.4
版本 1.4.0
2023年8月9日
androidx.emoji2:emoji2-*:1.4.0
已发布。版本 1.4.0 包含这些提交。
自 1.3.0 以来重要的更改
- 引入了表情符号选择器库。查看 开发者文档 以了解更多详细信息。
版本 1.4.0-rc01
2023年7月26日
androidx.emoji2:emoji2-*:1.4.0-rc01
已发布。版本 1.4.0-rc01 包含这些提交。
API 更改
- 引入
registerSource
列表(Iae92f) - API 委员会反馈:将
TransitionManager.seekTo()
重命名为createSeekController()
。请将之前关于将TransitionManager.seekTo()
添加到TransitionManager.createSeekController()
的注释调整为TransitionManager.createSeekController()
。(Idbeb1) - 添加了
ExerciseRouteResult
,它不是Data
、NoData
和ConsentRequiredStates
的超类。添加了ExerciseRoute
作为独立类,它保存路线的位置数据。(I22eed) - 引入了
PagerLayoutInfo
,其中包含在 Pager 中测量传递后收集的信息。还引入了 PageInfo,即 Pager 中单个已测量 Page 的信息。(Iad003,b/283098900)
错误修复
- 我们已根据 Material3 设计更新了
Button
、IconButton
和TextButton
的颜色。Button
、IconButton
和TextButton
的语义角色现在可以使用Modifier.semantics
覆盖。(Ib2495) - 修复了
EmojiPickerView
的选项卡选择和指示器更新滞后于一次点击的问题。(I4db04) - 显示表情符号选择器时出现
FileNotFoundException
(I353e4) - 在使用
EmojiPickerView
时捕获WindowManager.BadTokenException
(I0a144)
版本 1.4.0-beta05
2023年6月7日
androidx.emoji2:emoji2-*:1.4.0-beta05
已发布。版本 1.4.0-beta05 包含这些提交。
错误修复
- 修复了在 1.3 中引入的一个错误,该错误会导致
MetricsAffectingSpans
(如RelativeSizeSpan
)应用两次。一次在文本布局期间,另一次在EmojiSpan.draw
内部。结果是大小不正确的绘制,如果文本大小参数被跨度更改,则可见。(b/283208650)
版本 1.4.0-beta04
2023年5月24日
androidx.emoji2:emoji2-*:1.4.0-beta04
已发布。版本 1.4.0-beta04 包含这些提交。
此版本修复了自 1.0 以来存在的一个错误,该错误会导致具有非主处理程序的视图在字体加载完成后尝试更新表情符号跨度时抛出异常。没有解决方法,如果您受到此错误的影响,请升级到此版本或更高版本。
错误修复
EmojiCompat
初始化回调现在将使用每个视图的处理程序,尊重不在主线程上的视图。(Iccbcf)
版本 1.4.0-beta03
2023年5月10日
androidx.emoji2:emoji2-*:1.4.0-beta03
已发布。版本 1.4.0-beta03 包含这些提交。
错误修复
版本 1.4.0-beta02
2023年4月19日
androidx.emoji2:emoji2-*:1.4.0-beta02
已发布。版本 1.4.0-beta02 包含这些提交。
错误修复
- 更新 lint 基线文件(Iaa212)
版本 1.4.0-beta01
2023年4月5日
androidx.emoji2:emoji2-*:1.4.0-beta01
已发布。版本 1.4.0-beta01 包含这些提交。
新功能
androidx.emoji2:emoji2-emojipicker
表情符号选择器是一种 UI 解决方案,它提供现代外观和感觉、最新的表情符号以及易用性。用户可以浏览和选择表情符号及其变体,或从他们最近使用过的表情符号中进行选择。借助此库,不同 OEM 的应用程序可以为其用户提供包容且统一的表情符号体验,而无需开发人员从头开始构建和维护自己的表情符号选择器。
最新的表情符号
每年都会发布新的表情符号,我们会在表情符号选择器中选择性地包含它们。为了确保向后兼容性,我们在内部执行准确的表情符号渲染能力检查以消除豆腐。这将确保库在多个 Android 版本和设备上兼容。
粘性变体
长按表情符号会显示一个变体菜单,例如不同的性别或肤色。您选择的变化将保存在表情符号选择器中,并且上次选择的变体将在主面板中使用。有了此功能,用户只需轻按一下即可发送他们首选的表情符号变体。
最近使用的表情符号
RecentEmojiProvider
负责提供“最近使用”类别中的表情符号。库有一个默认的最近表情符号提供程序,它满足最常见的用例。
- 所有选择的表情符号都保存在共享首选项中的应用级别。
- 选择器最多显示 3 行已选择的表情符号(已去重),按时间倒序排列。
如果此默认行为足够,则无需设置 setRecentEmojiProvider()
方法。
与 EmojiCompat 协作
如果应用有 EmojiCompat
实例,它将在表情符号选择器中使用,以尽可能多地渲染表情符号。如果 EmojiCompat
被禁用,表情符号选择器仍将正常工作。
如何使用库
要使用库,应用开发者应该
在
build.gradle
中导入androidx.emoji2:emojipicker:$version
。dependencies { implementation "androidx.emoji2:emojipicker:$version" }
填充表情符号选择器视图,并根据每个表情符号单元格的所需大小选择设置
emojiGridRows
和emojiGridColumns
。- 您可以不设置它们,默认值为 9 个
emojiGridColumns
,行数将根据父视图高度和emojiGridColumns
计算。 - 您可以将
emojiGridRows
设置为浮点数,以指示在 XML 中向下滚动时有更多表情符号。
<androidx.emoji2.emojipicker.EmojiPickerView android:id="@+id/emoji_picker" android:layout_width="match_parent" android:layout_height="match_parent" app:emojiGridColumns="9" />
- 您可以不设置它们,默认值为 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)
假设您想将选择的表情符号附加到 EditText,请使用
setOnEmojiPickedListener()
。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" />
请参阅示例应用以了解实现示例。
可以在 此处 找到完整的 API 接口。
示例应用
此 示例 应用演示了基本用例以及以下其他场景
- 由于
emojiGridRows
和emojiGridColumns
被重置,因此视图重新布局。 - 最近的表情符号提供程序被覆盖以按频率排序。
- 样式自定义。
API 更改
表情符号选择器库已使用以下新 API 进行更新
EmojiPickerView
类,它在一个带有可点击水平标题的垂直可滚动视图中提供最新的表情符号。- 能够通过 XML 属性
emojiGridColumns
和emojiGridRows
或setEmojiGridColumns()
和setEmojiGridRows()
方法设置表情符号选择器网格中的列数和行数。 - 能够通过
setOnEmojiPickedListener()
方法设置表情符号选择监听器。每当用户点击任何表情符号时,都会通知监听器。 - 能够通过
setRecentEmojiProvider()
方法提供最近的表情符号提供程序。这是一个可选功能。如果未设置最近的表情符号提供程序,库将使用默认的最近表情符号提供程序。默认行为定义如下- 所有选择的表情符号都保存在共享首选项中的应用级别。
- 选择器最多显示 3 行已选择的表情符号(已去重),按时间倒序排列。
EmojiViewItem
类,它保存显示的表情符号及其表情符号变体。RecentEmojiProvider
接口,可以实现该接口以提供最近的表情符号列表。recentEmojiProvider
负责提供“最近使用”类别中的表情符号。RecentEmojiAsyncProvider
接口,可以实现该接口以提供最近的表情符号列表。RecentEmojiAsyncProvider
负责提供“最近使用”类别中的表情符号。此接口等效于RecentEmojiProvider
,它允许客户端覆盖getRecentEmojiListAsync()
方法以提供最近的表情符号。RecentEmojiProviderAdapter
类,它是RecentEmojiAsyncProvider
的适配器,并实现了RecentEmojiProvider
。
版本 1.4.0-alpha01
2023 年 3 月 22 日
androidx.emoji2:emoji2-*:1.4.0-alpha01
已发布。版本 1.4.0-alpha01 包含这些提交。
错误修复
- 修复测试,禁用 flake 测试并清理。
版本 1.3
版本 1.3.0
2023 年 3 月 22 日
androidx.emoji2:emoji2-*:1.3.0
已发布。版本 1.3.0 包含这些提交。
自 1.2.0 以来重要更改
- 此版本允许 Compose Foundation
1.4.0
及更高版本启用 emoji2 集成。 - 它还允许使用自定义绘图代码替换
EmojiSpans
的功能,以及对 Android 上定义的表情符号排除的支持。
版本 1.3.0-rc01
2023 年 3 月 8 日
androidx.emoji2:emoji2-*:1.3.0-rc01
已发布。版本 1.3.0-rc01 包含这些提交。
新功能
- 此版本是为了支持 emoji2 compose 集成。
API 更改
- 替换跨度以用于自定义绘图代码。
- 查询系统排除项。
错误修复
- 并修复了一个错误,即背景跨度未正确应用在
EmojiSopans
后面。
版本 1.3.0-beta03
2023 年 2 月 23 日
androidx.emoji2:emoji2-bundled:1.3.0-beta03
、androidx.emoji2:emoji2-views:1.3.0-beta03
和 androidx.emoji2:emoji2-views-helper:1.3.0-beta03
已发布。
2023 年 2 月 22 日
androidx.emoji2:emoji2:1.3.0-beta03
已发布。版本 1.3.0-beta03 包含这些提交。
新功能
- 无更改。此版本是为了准备 compose 集成。
版本 1.3.0-beta02
2023 年 2 月 8 日
androidx.emoji2:emoji2-*:1.3.0-beta02
已发布。版本 1.3.0-beta02 包含这些提交。
新功能
- 此版本是为了稳定以支持 compose 集成。
版本 1.3.0-beta01
2023年1月25日
androidx.emoji2:emoji2-*:1.3.0-beta01
已发布。版本 1.3.0-beta01 包含这些提交。
新功能
- 查询系统排除项。
- 替换跨度以用于自定义绘图代码。
- 并修复了一个错误,即背景跨度未正确应用在
EmojiSopans
后面。 - 此版本添加了在 Compose 中支持
EmojiCompat
所需的 API。预计在不久的将来发布的版本中将支持 emoji compat 的 compose。
版本 1.3.0-alpha01
2023 年 1 月 11 日
androidx.emoji2:emoji2-*:1.3.0-alpha01
已发布。版本 1.3.0-alpha01 包含这些提交。
用于低级交互的新 API
- 查询系统排除项
- 替换跨度以用于自定义绘图代码
- 并修复了一个错误,即背景跨度未正确应用在
EmojiSopans
后面。 - 此版本添加了在 Compose 中支持
EmojiCompat
所需的 API。预计在不久的将来发布的版本中将支持 emoji compat 的 compose。
API 更改
- 向
TypefaceEmojiRasterizer
添加了查询系统排除项的功能。(I5653e) - 添加了新的 API
EmojiCompat.SpanFactory
,用于替换默认的EmojiSpan
行为,并使用自定义绘图和大小调整代码。(Ib69d9) - 将
EmojiCompat
添加到 Compose(I96f37,b/139326806)
错误修复
- Emoji2 现在将正确绘制来自
BackgroundSpan
的背景。(Ide6a8,b/230525134) - 完成 1.5.0-beta01 的 AppCompat API(I2a43d,b/236866227)
版本 1.2
版本 1.2.0
2022 年 8 月 10 日
androidx.emoji2:emoji2-*:1.2.0
已发布。版本 1.2.0 包含这些提交。
自 1.1.0 以来重要更改
这是一个错误修复版本。自 1.1.0 以来没有添加新功能或 API。
但是,使用 PrecomputedText
或 TextView.setText(char[])
的应用应优先升级到此版本。
修复了以下错误
Emoji2
将通过丢弃先前预计算的文本布局将表情符号添加到PrecomputedText
。(I47d06,b/211231958)- 将 Android P 中的编辑器崩溃修复程序移植到配置为使用 emoji2 的
EditText
。(Ifd709,b/216891011) - 修复当 emoji2 加载字体并使用
TextView.setText(char[])
时发生的崩溃。(Id511e,b/206859724)
版本 1.2.0-rc01
2022 年 7 月 27 日
androidx.emoji2:emoji2-*:1.2.0-rc01
已发布。版本 1.2.0-rc01 包含这些提交。
- 自上一个 Beta 版本以来没有更改。
版本 1.2.0-beta01
2022 年 7 月 13 日
androidx.emoji2:emoji2-*:1.2.0-beta01
已发布。版本 1.2.0-beta01 包含这些提交。
新功能
- 与上一个版本没有变化(此版本是为了支持 AppCompat 版本)。
版本 1.2.0-alpha04
2022 年 4 月 20 日
androidx.emoji2:emoji2-*:1.2.0-alpha04
已发布。版本 1.2.0-alpha04 包含这些提交。
新功能
- 此版本中没有更改。
版本 1.2.0-alpha03
2022 年 4 月 6 日
androidx.emoji2:emoji2-*:1.2.0-alpha03
已发布。版本 1.2.0-alpha03 包含这些提交。
新功能
- 与上一个版本没有变化(此版本是为了支持 appcompat 版本)。
版本 1.2.0-alpha02
2022 年 3 月 23 日
androidx.emoji2:emoji2-*:1.2.0-alpha02
已发布。版本 1.2.0-alpha02 包含这些提交。
错误修复
Emoji2
将通过丢弃先前预计算的文本布局将表情符号添加到PrecomputedText
。(I47d06,b/211231958)- 将 Android P 中的编辑器崩溃修复回传到配置为使用 emoji2 的 EditText。(Ifd709,b/216891011)
- 修复 emoji2 加载字体时使用
TextView.setText(char[])
导致的崩溃。(Id511e,b/206859724)
版本 1.2.0-alpha01
2022 年 2 月 23 日
androidx.emoji2:emoji2-*:1.2.0-alpha01
已发布。版本 1.2.0-alpha01 包含以下提交。
自 1.1.0 以来没有更改。
1.1
版本 1.1.0
2022 年 2 月 23 日
androidx.emoji2:emoji2-*:1.1.0
已发布。版本 1.1.0 包含以下提交。
自 1.0.0 以来重要的更改
- emoji2-bundled 包含 emoji 14 字体
- 新的
getEmojiMatch
API 为键盘提供准确的信息,以便在系统字体后面的 emojicompat 字体存在的情况下决定 emoji 的显示方式 - 修复了
NumberKeyListener
的错误,使数字输入能够正确过滤字符。
版本 1.1.0-rc01
2022 年 2 月 9 日
androidx.emoji2:emoji2-*:1.1.0-rc01
已发布。版本 1.1.0-rc01 包含以下提交。
新功能
与 Beta 版相比没有变化。
与 emoji2 1.0.0 相比的新功能
emoji2-bundled
包含 emoji 14 字体- 新的
getEmojiMatch
API 为键盘提供准确的信息,以便在系统字体后面的 emojicompat 字体存在的情况下决定 emoji 的显示方式 - 修复了
NumberKeyListener
的错误,使数字输入能够正确过滤字符
版本 1.1.0-beta01
2022 年 1 月 26 日
androidx.emoji2:emoji2-*:1.1.0-beta01
已发布。版本 1.1.0-beta01 包含以下提交。
错误修复
- androidx-emoji2 beta01 版本发布。与 alpha01 相比没有更改(Ic61d9)
版本 1.1.0-alpha01
2021 年 12 月 15 日
androidx.emoji2:emoji2-*:1.1.0-alpha01
已发布。版本 1.1.0-alpha01 包含以下提交。
新功能
emoji2-bundled
包含 emoji 14 字体- 新的
getEmojiMatch
API 为键盘提供准确的信息,以便在系统字体后面的 emojicompat 字体存在的情况下决定 emoji 的显示方式 - 修复了
NumberKeyListener
的错误,使数字输入能够正确过滤字符
API 更改
- 添加新的 API
getEmojiMatch
以允许键盘更准确地查找 emojicompat 中的 emoji 匹配行为。 - 弃用
hasEmojiGlyph
,因为当针对比平台 emoji 字体旧的字体进行测试时,其布尔返回值不准确。请使用getEmojiMatch
替换。(Ie693d)
错误修复
- Emoji2 不会包装
NumberKeyListener
的实例,允许TextView
配置区域设置。 - Appcompat 不会包装传递给
setKeyListener
的NumberKeyListener
实例,允许TextView
正确配置NumberKeyListeners
上的区域设置。(Ibf113,b/207119921)
1.0
版本 1.0.1
2021 年 12 月 15 日
androidx.emoji2:emoji2-*:1.0.1
已发布。版本 1.0.1 包含以下提交。
错误修复
Emoji2
不会包装NumberKeyListener
的实例,允许TextView
配置区域设置。- Appcompat 不会包装传递给
setKeyListener
的NumberKeyListener
实例,允许TextView
正确配置NumberKeyListeners
上的区域设置。(Ibf113,b/207119921)
版本 1.0.0
2021 年 11 月 17 日
androidx.emoji2:emoji2-*:1.0.0
已发布。版本 1.0.0 包含以下提交。
1.0.0 的主要功能
androidx.emoji2 替换 androidx.emoji,并提供其他功能
- 与 androidx.emoji 相比,APK 大小减少
- 自动配置
- 作为 appcompat 1.4 的依赖项添加
有关 androidx.emoji2 的更多信息,请参阅 支持现代 Emoji 以及我们的 Android Dev Summit 演讲 在您的应用中显示所有 Emoji Android Dev。
版本 1.0.0-rc01
2021 年 10 月 27 日
androidx.emoji2:emoji2-*:1.0.0-rc01
已发布。版本 1.0.0-rc01 包含以下提交。
- 自 beta02 以来没有变化。
Emoji2 版本 1.0.0-beta01
2021 年 9 月 15 日
androidx.emoji2:emoji2-*:1.0.0-beta01
已发布。版本 1.0.0-beta01 包含以下提交。
API 更改
向
FontRequestEmojiCompatConfig
添加了setLoadingExecutor
,它取代了以前的setHandler
API。此 API 允许应用配置FontRequestEmojiCompatConfig
以使用任何后台执行程序。此更改是与
androidx.emoji:emoji
的重大更改,因此setHandler
保留为一个无操作的已弃用 API 以帮助迁移。(I6cd48)EmojiCompat 在 Android 11 上正确设置
EditorInfo.extras
- 不继承 EditText 的自定义小部件可以使用 IME 调用
EmojiCompat.updateEditorInfo
来通知 IME 它们支持 EmojiCompat 处理。(I1ea9b)
- 不继承 EditText 的自定义小部件可以使用 IME 调用
错误修复
- 修复
DefaultEmojiCompatConfig
以在 API 19 和 28 上正确查找 emoji 字体提供程序。这修复了 emoji2 1.0.0-alpha01 中引入的一个错误。(Ib33d8,b/197906329)
版本 1.0.0-alpha03
2021 年 6 月 30 日
androidx.emoji2:emoji2-*:1.0.0-alpha03
已发布。版本 1.0.0-alpha03 包含以下提交。
新功能
此版本是错误修复和稳定性版本。
- EmojiEditTextHelper 现在允许将
null
作为 KeyListener 传递。这允许平台行为允许将 null 应用于支持 emoji 的 EditText 实现。 - 使用 EmojiCompatInitializer 时,初始启动延迟得到改进,以便在第一个 Activity 恢复后触发。这允许应用启动无竞争地发生,并避免为从未显示 UI 的应用启动加载字体。经过短暂延迟后,EmojiCompat 将创建一个线程来加载 emoji 字体。
- 从
androidx.emoji2:emoji2
添加了对androidx.lifecycle:lifecycle-process
的新依赖项以实现延迟。对于已经包含生命周期(例如包含 appcompat 的应用)的应用,这将对 APK 大小产生可忽略不计的影响。
API 更改
- 允许在 AppCompatEditText 中使用 null KeyListener。这反转了在 1.4.0-alpha01 中添加到 AppCompatEditText 的非空注释,并在传递 null 时恢复了以前的行为。(I21482,b/189559345)
错误修复
- 将 EmojiCompatInitializer 更改为延迟加载字体,直到第一个
Activity.onResume
后的 500 毫秒。这允许 Activity 无竞争地执行Application.onCreate
和Activity.onCreate
,同时仍然确保在应用启动后不久加载 emoji 字体。(I4bff7)
版本 1.0.0-alpha02
2021 年 6 月 2 日
androidx.emoji2:emoji2:1.0.0-alpha02
、androidx.emoji2:emoji2-views:1.0.0-alpha02
和 androidx.emoji2:emoji2-views-helper:1.0.0-alpha02
已发布。版本 1.0.0-alpha02 包含以下提交。
API 更改
- 重命名了
emoji2-views-helper
中的包为androidx.emoji2.viewsintegration
。这对 AppCompat1.4.0-alpha01
来说是一个重大更改,应用必须确保 AppCompat 依赖项已更新以使用新的 emoji2 版本。(Ie8397)
版本 1.0.0-alpha01
2021 年 5 月 18 日
androidx.emoji2:emoji2:1.0.0-alpha01
、androidx.emoji2:emoji2-views:1.0.0-alpha01
和 androidx.emoji2:emoji2-views-helper:1.0.0-alpha01
已发布。版本 1.0.0-alpha01 包含以下提交。
此初始版本中的功能
建议所有应用集成 emojicompat 以支持 API19 及更高版本中的现代 emoji。应用中所有用户生成的内容都包含 🎉。
EmojiCompat 已从 androidx.emoji
工件移动到新的 androidx.emoji2
,现在处于 alpha01 版本。新的工件替换了以前的版本。
从 AppCompat 1.4.0-alpha01
开始,emoji2
作为依赖项添加到 AppCompat,并默认情况下为 AppCompat 视图启用。
emoji2
工件引入了使用 androidx.startup
库的新自动配置。您不再需要编写任何 👨🏽💻 代码来显示 🐻❄️。
emoji2 与 emoji 的更改
- 使用
androidx.startup
添加了新的自动配置EmojiCompatInitializer
。 - 添加了新的默认配置,该配置使用服务位置在
DefaultEmojiCompatConfiguration
中查找可下载的字体提供程序。 - 类已从
androidx.emoji
包移动到androidx.emoji2
。 - 将
EmojiTextView
和相关视图拆分为单独的工件emoji2-views
。仅当您的应用不使用 appcompat 时才应使用此功能。 - 将用于将 emojicompat 集成到自定义视图中的帮助器提取到单独的工件
emoji2-views-helper
中。 - 添加了可空性注释。
- 即使
EmojiCompat
未初始化,现在也可以使用emoji2-views-helper
中的帮助器(以前它们会抛出异常)。
您应该添加哪个依赖项?
- 使用 AppCompat 的应用应升级到 appcompat 版本 AppCompat
1.4.0-alpha01
或更高版本。 - 不使用 AppCompat 且使用平台上的
TextView
/EditText
的应用应使用emoji2-views
中的EmojiTextView
和相关类。
如何在自定义视图中提供支持
- 使用 AppCompat 的应用应扩展
AppCompatTextView
、AppCompatButton
等,而不是平台TextView
等。 - 不使用 AppCompat 的应用应添加
androidx.emoji2:emoji2-views-helper
依赖项,并使用帮助器与自定义TextView
或EditText
子类集成。
配置自动初始化
应用可以通过在清单中添加以下内容来禁用自动初始化
<provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer" tools:node="remove" /> </provider>
这会禁用自动配置,然后您可以传递自定义配置到
EmojiCompat.init
。可以通过DefaultEmojiCompatConfig.create(context)
获取系统的默认配置,并在传递到EmojiCompat.init
之前进行进一步配置。