Emoji2
最近更新时间 | 稳定版 | 候选版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 7 月 10 日 | 1.4.0 | - | 1.5.0-beta01 | - |
声明依赖项
如要添加 Emoji2 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项:
Groovy
dependencies { def emoji2_version = "1.4.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.4.0" implementation("androidx.emoji2:emoji2:$emoji2_version") implementation("androidx.emoji2:emoji2-views:$emoji2_version") implementation("androidx.emoji2:emoji2-views-helper:$emoji2_version") }
如需详细了解依赖项,请参阅添加 build 依赖项。
反馈
您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。
如需了解详情,请参阅问题跟踪器文档。
Emoji2 Emojipicker 版本 1.0
版本 1.0.0-alpha03
2023 年 3 月 8 日
发布了 androidx.emoji2:emoji2-emojipicker:1.0.0-alpha03
。版本 1.0.0-alpha03 中包含这些提交内容。
bug 修复
- 移除了不必要的资源,并将库大小缩减了约 0.3M。
版本 1.0.0-alpha02
2023 年 2 月 22 日
发布了 androidx.emoji2:emoji2-emojipicker:1.0.0-alpha02
。版本 1.0.0-alpha02 中包含这些提交内容。
API 变更
- 为 Java 客户端添加了新的 API,以便能够提供最近用过的表情符号。(I39d10)
bug 修复
- 更新了表情符号资源以支持表情符号 15.0 (Ib4eb3)
- 从弹出式窗口中选择表情符号时,将所有完全相同的表情符号更新为新选择的表情符号(最近的表情符号行除外)。点击后还会读出表情符号。(I892c6)
- 等待表情符号兼容型加载完成后再显示
EmojiPickerView
。(I29e03)
版本 1.0.0-alpha01
2023 年 1 月 25 日
发布了 androidx.emoji2:emoji2-emojipicker:1.0.0-alpha01
。版本 1.0.0-alpha01 中包含这些提交内容。
新功能
- 引入了表情符号选择器,为用户提供流畅一致的体验,让他们在各种 Android OS OEM 设备和应用中都能使用最新的表情符号。它不仅支持使用最新表情符号,还提供了表情符号选择器界面,包括不同肤色的表情符号和对表情符号 compat 的支持。
API 变更
- 引入了
EmojiPickerView
类,能在可滚动的垂直视图(包含可点击的水平标题)中显示最新的表情符号。 - 您可以通过 XML 属性
emojiGridColumns
或函数setEmojiGridColumns()
来设置表情符号选择器网格列。 - 您也可以通过 XML 属性
emojiGridRows
或函数setEmojiGridRows()
来设置表情符号选择器网格行。 - 您还可以通过
setOnEmojiPickedListener()
设置所选表情符号的监听器。届时监听器将在用户点击任何表情符号时收到通知。 - 最近用过的表情符号提供程序可随
setRecentEmojiProvider()
一起提供。这是可选函数。如果未设置最近用过的表情符号提供程序,该库将使用默认的最近用过的表情符号提供程序。默认行为的定义如下:1) 所有选定的表情符号都将在应用级别保存到共享偏好设置中。2) 选择器最多可显示 3 行选定的表情符号,而且这些表情符号进行了去重处理,并按时间倒序排列。 - 引入了
EmojiViewItem
类,用于存储显示的表情符号及其表情符号变体。 - 引入了可以实现的
RecentEmojiProvider
接口,用于提供最近用过的表情符号的列表。recentEmojiProvider
负责提供“最近用过”类别中的表情符号。
版本 1.5
版本 1.5.0-beta01
2024 年 7 月 10 日
发布了 androidx.emoji2:emoji2-*:1.5.0-beta01
。版本 1.5.0-beta01 包含这些提交内容。
新功能
- 支持表情符号 15.1 和双向表情符号选择界面。
- 支持重新设计多粗略选择。
bug 修复
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()
的评论。(Idbeb1) - 添加了
ExerciseRouteResult
,它不是Data
、NoData
和ConsentRequiredStates
的父类。添加了ExerciseRoute
作为独立的类,用于保存路线的位置数据。(I22eed) - 引入了
PagerLayoutInfo
,其中包含在 Pager 中执行测量传递后收集的信息。此外,还引入了 PageInfo,即 Pager 中单个衡量的网页的相关信息。(Iad003、b/283098900)
bug 修复
- 我们根据 Material3 设计更新了
Button
、IconButton
和TextButton
的颜色。现在可以使用Modifier.semantics
替换Button
、IconButton
和TextButton
的语义角色。(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 中包含这些提交内容。
bug 修复
- 修复了 1.3 中引入的会导致
MetricsAffectingSpans
(如RelativeSizeSpan
)应用两次的 bug。一次在文本布局期间,在EmojiSpan.draw
内另一次。结果的绘图大小不正确,如果任何文本大小参数被 span 更改,则可见。(b/283208650)
版本 1.4.0-beta04
2023 年 5 月 24 日
发布了 androidx.emoji2:emoji2-*:1.4.0-beta04
。版本 1.4.0-beta04 中包含这些提交内容。
此版本修复了自 1.0 版以来出现的一个错误,即在字体加载完成后尝试更新表情符号 span 时,带有非主处理程序的视图会抛出异常。没有变通方案,如果您受到此错误的影响,请升级到此版本或更高版本。
bug 修复
EmojiCompat
初始化回调现在会使用每个视图中的处理程序,并遵循不在主线程上的视图。(Iccbcf)
版本 1.4.0-beta03
2023 年 5 月 10 日
发布了 androidx.emoji2:emoji2-*:1.4.0-beta03
。版本 1.4.0-beta03 中包含这些提交内容。
bug 修复
版本 1.4.0-beta02
2023 年 4 月 19 日
发布了 androidx.emoji2:emoji2-*:1.4.0-beta02
。版本 1.4.0-beta02 中包含这些提交内容。
bug 修复
- 更新 lint 基准文件 (Iaa212)
版本 1.4.0-beta01
2023 年 4 月 5 日
发布了 androidx.emoji2:emoji2-*:1.4.0-beta01
。版本 1.4.0-beta01 中包含这些提交内容。
新功能
androidx.emoji2:emoji2-emojipicker
表情符号选择器是一个界面解决方案,提供时尚现代的外观和风格、最新表情符号和易用性。用户可以浏览并选择表情符号及其变体,也可以从最近使用过的表情符号中进行选择。借助此库,不同 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 Surface,请点击此处。
示例应用
此示例应用演示了基本用例以及以下附加场景:
- 由于
emojiGridRows
和emojiGridColumns
已重置,因此该视图重新布局。 - 替换最近用过的表情符号提供程序,以按频率排序。
- 样式自定义。
API 变更
表情符号选择器库已更新,添加了以下新 API:
EmojiPickerView
类,用于在可滚动的纵向视图中提供最新的表情符号,并带有可点击的水平标题。- 能够通过 XML 属性
emojiGridColumns
和emojiGridRows
或setEmojiGridColumns()
和setEmojiGridRows()
方法设置表情符号选择器网格的列数和行数。 - 能够通过
setOnEmojiPickedListener()
方法设置表情符号选取的监听器。无论何时点击任何表情符号,监听器都会收到通知。 - 能够通过
setRecentEmojiProvider()
方法提供最近用过的表情符号提供程序。这是可选函数。如果未设置最近用过的表情符号提供程序,该库将使用默认的最近用过的表情符号提供程序。默认行为的定义如下: <ph type="x-smartling-placeholder">- </ph>
- 所有选定的表情符号都将按应用保存在共享的偏好设置中。
- 选择器最多可显示 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 中包含这些提交内容。
bug 修复
- 修复测试,停用不稳定测试,并进行清理。
版本 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
及更高版本启用表情符号 2 集成。 - 它还支持将
EmojiSpans
替换为自定义绘制代码的功能,并支持在 Android 中定义的表情符号排除对象。
版本 1.3.0-rc01
2023 年 3 月 8 日
发布了 androidx.emoji2:emoji2-*:1.3.0-rc01
。版本 1.3.0-rc01 中包含这些提交内容。
新功能
- 此版本支持表情符号 2 Compose 集成。
API 变更
- 替换自定义绘制代码的 span。
- 查询系统排除项。
bug 修复
- 修复了在
EmojiSopans
后面未正确应用背景 span 的 bug。
版本 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 中包含这些提交内容。
新功能
- 查询系统排除项。
- 替换自定义绘图代码的 span。
- 修复了在
EmojiSopans
后面未正确应用背景 span 的 bug。 - 此版本添加了在 Compose 中支持
EmojiCompat
所必需的 API。预计在不久的将来,Compose 将支持表情符号 compat。
版本 1.3.0-alpha01
2023 年 1 月 11 日
发布了 androidx.emoji2:emoji2-*:1.3.0-alpha01
。版本 1.3.0-alpha01 中包含这些提交内容。
用于低级别互动的新 API
- 查询系统排除项
- 替换自定义绘图代码的 span
- 修复了在
EmojiSopans
后面未正确应用背景 span 的 bug。 - 此版本添加了在 Compose 中支持
EmojiCompat
所必需的 API。预计在不久的将来,Compose 将支持表情符号 compat。
API 变更
- 为
TypefaceEmojiRasterizer
添加了查询系统排除项的能力。(I5653e) - 添加了新 API
EmojiCompat.SpanFactory
,以用于将默认EmojiSpan
行为替换为自定义绘图和大小调整代码。(Ib69d9) - 向 Compose 添加了
EmojiCompat
(I96f37、b/139326806)
bug 修复
- 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 以来的重要变更
这是一个 bug 修复版本,自 1.1.0 以来,未添加任何新的功能或 API。
不过,使用 PrecomputedText
或 TextView.setText(char[])
的应用应优先升级到此版本。
修复了以下 bug:
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 中包含这些提交内容。
bug 修复
- 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 字体时如何显示表情符号 - 为
NumberKeyListener
修复了 bug,使数字输入功能可以正确滤除字符。
版本 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 字体时如何显示表情符号 - 为
NumberKeyListener
修复了 bug,使数字输入功能可以正确滤除字符
版本 1.1.0-beta01
2022 年 1 月 26 日
发布了 androidx.emoji2:emoji2-*:1.1.0-beta01
。版本 1.1.0-beta01 中包含这些提交内容。
bug 修复
- 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 字体时如何显示表情符号 - 为
NumberKeyListener
修复了 bug,使数字输入功能可以正确滤除字符
API 变更
- 添加了新的 API
getEmojiMatch
,以便键盘在 emojicompat 中更准确地查找表情符号匹配行为。 - 废弃了
hasEmojiGlyph
,因为在针对早于平台表情符号字体的字体进行测试时,其布尔值返回值不准确。替换成了getEmojiMatch
。(Ie693d)
bug 修复
- 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 中包含这些提交内容。
bug 修复
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,前者新增了以下功能:
- 缩小了 APK 大小(与 androidx.emoji 相比)
- 自动配置
- 作为依赖项添加到了 appcompat 1.4 中
如需详细了解 androidx.emoji2,请参阅支持新式表情符号,以及 Android 开发者峰会演讲在您的应用中显示所有表情符号(Android 开发)。
版本 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
,取代了以前的 APIsetHandler
。使用此 API,应用可以将FontRequestEmojiCompatConfig
配置为使用任何后台执行程序。这项更改是
androidx.emoji:emoji
中的一项破坏性更改,因此系统将setHandler
保留为以空操作形式废弃的 API,以便于迁移。(I6cd48)EmojiCompat 可以在 Android 11 上正确设置
EditorInfo.extras
- 如果自定义 widget 使用的是未将 EditText 子类化的 IME,那么这些 widget 可能会调用
EmojiCompat.updateEditorInfo
来通知 IME 它们支持 EmojiCompat 处理。(I1ea9b)
- 如果自定义 widget 使用的是未将 EditText 子类化的 IME,那么这些 widget 可能会调用
bug 修复
- 修复了
DefaultEmojiCompatConfig
,以便在 API 19 和 28 上正确查找表情符号字体提供程序。这修复了 emoji2 1.0.0-alpha01 中的 bug。(Ib33d8、b/197906329)
版本 1.0.0-alpha03
2021 年 6 月 30 日
发布了 androidx.emoji2:emoji2-*:1.0.0-alpha03
。版本 1.0.0-alpha03 中包含这些提交内容。
新功能
此版本属于 bug 修复及稳定版本。
- EmojiEditTextHelper 现在允许将
null
作为 KeyListener 进行传递。这样即可允许将 null 值应用于支持表情符号的 EditText 实现的平台行为。 - 使用 EmojiCompatInitializer 时,初始启动延迟会改进为在第一个 activity 恢复后触发。这样即可在无争用情况下启动应用,并避免为从不显示界面的应用启动加载字体。在短暂延迟后,EmojiCompat 将创建一个线程来加载表情符号字体。
- 添加了新的
androidx.lifecycle:lifecycle-process
依赖项(来自androidx.emoji2:emoji2
),以便实现延迟。对于已经包含生命周期的应用(例如具有 appcompat 的应用),这对 APK 大小的影响可以忽略不计。
API 变更
- 允许在 AppCompatEditText 中使用 null KeyListener。这会逆转在 1.4.0-alpha01 中添加到 AppCompatEditText 的非 null 注解,并在传递 null 时恢复先前的行为。(I21482、b/189559345)
bug 修复
- 将 EmojiCompatInitializer 更改为将字体加载延迟到第一个
Activity.onResume
之后的 500 毫秒。这样即可让 activity 在无争用情况下执行Application.onCreate
和Activity.onCreate
,同时仍可确保系统在应用启动后不久便加载表情符号字体。(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 开始提供的新式表情符号。您应用中的所有用户生成的内容均包含 🎉。
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
中。 - 添加了可为 null 性注解。
- 现在,即使未初始化
EmojiCompat
也可以使用emoji2-views-helper
中的帮助程序,而在之前则会抛出异常。
您应该添加什么依赖项?
- 如果应用包含 AppCompat,则应升级到版本 AppCompat
1.4.0-alpha01
或更高版本。 - 如果应用不含 AppCompat 并会使用平台中的
TextView
/EditText
,则应使用EmojiTextView
和来自emoji2-views
的相关类。
如何在自定义视图中支持 AppCompat
- 包含 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
。