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.5.0
2024 年 9 月 4 日
androidx.emoji2:emoji2-*:1.5.0
已发布。版本 1.5.0 包含这些提交。
自 1.4.0 以来的重要更改
- 支持表情符号 15.1 和双向表情符号选择器 UI。只需简单点击双向切换器,用户即可在表情符号的左右方向版本之间切换。
- 支持多肤色表情符号选择器。长按情侣表情符号会显示一个用于零状态的多人表情符号选择器。当用户点击表情符号的左侧一半时,右下角的表情符号预览将相应更新。当用户选择表情符号的两半时,右下角的表情符号预览将显示整个表情符号,然后用户可以输入它。
版本 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 更改
- 为 Java 客户端添加了新的 API,以便能够提供最近使用的表情符号。 (I39d10)
错误修复
- 更新表情符号资源以支持 Emoji 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 包含 以下提交。
新功能
- 支持 Emoji 15.1 和双向表情符号选择器 UI。只需简单点击双向切换器,用户即可在表情符号的左右方向版本之间切换。
- 支持多肤色表情符号选择器。长按情侣表情符号会显示一个用于零状态的多人表情符号选择器。当用户点击表情符号的左侧一半时,右下角的表情符号预览将相应更新。当用户选择表情符号的两半时,预览将显示整个表情符号,然后用户可以输入它。
错误修复
- 删除了对新平台 API 的手动概述,因为在使用 R8 和 AGP 7.3 或更高版本(例如 R8 版本 3.3)时,以及在使用 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 包含 以下提交。
新功能
- 支持 Emoji 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
包含更新的表情符号字体以支持 Emoji 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 中单个已测量页面的信息。 (Iad003, b/283098900)
错误修复
- 我们已根据 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 包含以下提交。
错误修复
- 修复了 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
Emoji 选择器是一个提供现代外观、最新 Emoji 以及易用性的 UI 解决方案。用户可以浏览和选择 Emoji 及其变体,或从最近使用的 Emoji 中进行选择。通过这个库,不同 OEM 的应用程序可以为其用户提供包容性和统一的 Emoji 体验,而无需开发人员从头开始构建和维护自己的 Emoji 选择器。
最新 Emoji
每年都会发布新的 Emoji,我们会选择性地将其包含在 Emoji 选择器中。为了确保向后兼容性,我们在内部执行准确的 Emoji 渲染检查以消除豆腐块。这将确保该库在多个 Android 版本和设备上兼容。
粘性变体
长按 Emoji 将显示一个变体菜单,例如不同的性别或肤色。您选择的变体将保存在 Emoji 选择器中,并且上次选择的变体将用于主面板。使用此功能,用户只需点击一下即可发送他们首选的 Emoji 变体。
最近使用的 Emoji
RecentEmojiProvider
负责在“最近使用”类别中提供 Emoji。该库有一个默认的最近 Emoji 提供程序,满足最常见的用例。
- 所有选定的 Emoji 都会保存在共享首选项的每个应用程序级别。
- 选择器最多显示 3 行选定的 Emoji(去重),按时间倒序排列。
如果此默认行为足够,则无需设置 setRecentEmojiProvider()
方法。
与 EmojiCompat 协作
如果应用程序具有 EmojiCompat
实例,它将在 Emoji 选择器中用于渲染尽可能多的 Emoji。如果 EmojiCompat
被禁用,Emoji 选择器仍然可以正常工作。
如何使用该库
要使用该库,应用程序开发人员应
在
build.gradle
中导入androidx.emoji2:emojipicker:$version
。dependencies { implementation "androidx.emoji2:emojipicker:$version" }
膨胀 Emoji 选择器视图,并根据每个 Emoji 单元格所需的大小可选地设置
emojiGridRows
和emojiGridColumns
。- 您可以保留它们未设置,默认为 9 列
emojiGridColumns
,行将根据父视图高度和emojiGridColumns
计算。 - 您可以将
emojiGridRows
设置为浮点数,以指示如果在 XML 中向下滚动则有更多 Emoji。
<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)
假设您想将选定的 Emoji 附加到 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
被重置,因此视图重新布局。 - 最近的 Emoji 提供程序被覆盖以按频率排序。
- 样式自定义。
API 更改
Emoji 选择器库已更新以下新的 API
EmojiPickerView
类,它在一个具有可点击水平标题的垂直可滚动视图中提供最新的 Emoji。- 能够通过 XML 属性
emojiGridColumns
和emojiGridRows
或setEmojiGridColumns()
和setEmojiGridRows()
方法设置 Emoji 选择器网格中的列数和行数。 - 能够通过
setOnEmojiPickedListener()
方法设置 Emoji 选择监听器。每当用户点击任何 Emoji 时,都会通知监听器。 - 能够通过
setRecentEmojiProvider()
方法提供最近的 Emoji 提供程序。这是一个可选功能。如果未设置最近的 Emoji 提供程序,则库将使用默认的最近 Emoji 提供程序。默认行为定义如下- 所有选定的 Emoji 将保存在共享首选项的每个应用程序级别。
- 选择器最多显示 3 行选定的 Emoji(去重),按时间倒序排列。
EmojiViewItem
类,它保存显示的 Emoji 及其 Emoji 变体。RecentEmojiProvider
接口,可以实现它来提供最近的 Emoji 列表。recentEmojiProvider
负责在“最近使用”类别中提供 Emoji。RecentEmojiAsyncProvider
接口,可以实现它来提供最近的 Emoji 列表。RecentEmojiAsyncProvider
负责在“最近使用”类别中提供 Emoji。此接口等效于RecentEmojiProvider
,它允许客户端覆盖getRecentEmojiListAsync()
方法以提供最近的 Emoji。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 上定义的 Emoji 排除的支持。
版本 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。预计在不久的将来发布的版本中会支持 compose emoji compat。
版本 1.3.0-alpha01
2023 年 1 月 11 日
androidx.emoji2:emoji2-*:1.3.0-alpha01
已发布。版本 1.3.0-alpha01 包含这些提交。
用于低级交互的新 API
- 查询系统排除项
- 替换用于自定义绘制代码的跨度
- 并修复了一个错误,即背景跨度未正确应用在
EmojiSopans
后面。 - 此版本添加了在 Compose 中支持
EmojiCompat
所需的 API。预计在不久的将来发布的版本中会支持 compose emoji compat。
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
将通过丢弃先前预计算的文本布局将 Emoji 添加到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 字体存在时确定表情符号的显示方式。 - 修复了
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 字体存在时确定表情符号的显示方式。 - 修复了
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 字体存在时确定表情符号的显示方式。 - 修复了
NumberKeyListener
的错误,使数字输入能够正确过滤字符
API 更改
- 添加新的 API
getEmojiMatch
以允许键盘更准确地查找 emojicompat 中的表情符号匹配行为。 - 弃用
hasEmojiGlyph
,因为在针对比平台表情符号字体旧的字体进行测试时,其布尔返回值不准确。请使用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 的更多信息,请参阅 支持现代表情符号 以及我们的 Android 开发者峰会演讲 在您的应用中显示所有表情符号 Android 开发。
版本 1.0.0-rc01
2021 年 10 月 27 日
androidx.emoji2:emoji2-*:1.0.0-rc01
已发布。版本 1.0.0-rc01 包含这些提交。
- 自 Beta 版 02 以来没有变化。
Emoji2 版本 1.0.0-beta01
2021 年 9 月 15 日
androidx.emoji2:emoji2-*:1.0.0-beta01
已发布。版本 1.0.0-beta01 包含这些提交。
API 更改
已将
setLoadingExecutor
添加到FontRequestEmojiCompatConfig
中,它替换了以前的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 上正确查找表情符号字体提供程序。这修复了 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 传递。这允许平台行为将空值应用于支持表情符号的 EditText 实现。 - 当使用 EmojiCompatInitializer 时,初始启动延迟得到改进,以便在第一个 Activity 恢复后触发。这允许应用启动在没有争用资源的情况下发生,并避免为从不显示 UI 的应用启动加载字体。经过短暂延迟后,EmojiCompat 将创建一个线程来加载表情符号字体。
- 从
androidx.emoji2:emoji2
添加了对androidx.lifecycle:lifecycle-process
的新依赖项以实现延迟。对于已经包含生命周期(例如包含 appcompat 的应用)的应用,这将对 APK 大小产生微不足道的影響。
API 更改
- 允许 AppCompatEditText 中的 KeyListener 为空。这撤销了在 1.4.0-alpha01 中添加到 AppCompatEditText 的非空注释,并在传递空值时恢复了以前的行為。(I21482,b/189559345)
错误修复
- 将 EmojiCompatInitializer 更改为延迟加载字体,直到第一个
Activity.onResume
之后的 500 毫秒。这允许活动在没有争用资源的情况下执行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 以支持来自 API 19 的现代表情符号。应用中的所有用户生成内容都包含 🎉。
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
之前进行进一步配置。