Emoji2

在当前设备和版本更低的设备上显示表情符号。
最近更新时间 当前稳定版 下一候选版 Beta 版 Alpha 版
2021 年 6 月 30 日 - - - 1.0.0-alpha03

声明依赖项

如需添加 Emoji2 的依赖项,您必须在项目中添加 Google Maven 代码库。如需了解详情,请参阅 Google 的 Maven 代码库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

Groovy

dependencies {
    def emoji2_version = "1.0.0-beta01"

    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.0.0-beta01"

    implementation("androidx.emoji2:emoji2:$emoji2_version")
    implementation("androidx.emoji2:emoji2-views:$emoji2_version")
    implementation("androidx.emoji2:emoji2-views-helper:$emoji2_version")
}

如需详细了解依赖项,请参阅添加构建依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库的改进有自己的见解,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

1.0.0

版本 1.0.0-alpha03

2021 年 6 月 30 日

发布了 androidx.emoji2:emoji2-*:1.0.0-alpha03版本 1.0.0-alpha03 中包含这些提交内容

新功能

此版本属于 bug 修复及稳定版本。

  1. EmojiEditTextHelper 现在允许将 null 作为 KeyListener 进行传递。这样即可允许将 null 值应用于支持表情符号的 EditText 实现的平台行为。
  2. 使用 EmojiCompatInitializer 时,初始启动延迟会改进为在第一个 activity 恢复后触发。这样即可在无争用情况下启动应用,并避免为从不显示界面的应用启动加载字体。在短暂延迟后,EmojiCompat 将创建一个线程来加载表情符号字体。
  • 添加了新的 androidx.lifecycle:lifecycle-process 依赖项(来自 androidx.emoji2:emoji2),以便实现延迟。对于已经包含生命周期的应用(例如,具有 appcompat 的应用),这对 APK 大小的影响可以忽略不计。

API 变更

  • 允许在 AppCompatEditText 中使用 null KeyListener。这会逆转在 1.4.0-alpha01 中添加到 AppCompatEditText 的非 null 注解,并在传递 null 时恢复先前的行为。(I21482b/189559345

bug 修复

  • 将 EmojiCompatInitializer 更改为将字体加载延迟到第一个 Activity.onResume 之后的 500 毫秒。这样即可让 activity 在无争用情况下执行 Application.onCreateActivity.onCreate,同时仍可确保系统在应用启动后不久便加载表情符号字体。(I4bff7)

版本 1.0.0-alpha02

2021 年 6 月 2 日

发布了 androidx.emoji2:emoji2:1.0.0-alpha02androidx.emoji2:emoji2-views:1.0.0-alpha02androidx.emoji2:emoji2-views-helper:1.0.0-alpha02版本 1.0.0-alpha02 中包含这些提交内容

API 变更

  • emoji2-views-helper 中的软件包重命名为 androidx.emoji2.viewsintegration。这是 AppCompat 1.4.0-alpha01 的一项重大变更。应用必须更新 AppCompat 依赖项,才能使用新的 emoji2 版本。(Ie8397)

版本 1.0.0-alpha01

2021 年 5 月 18 日

发布了 androidx.emoji2:emoji2:1.0.0-alpha01androidx.emoji2:emoji2-views:1.0.0-alpha01androidx.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 的应用应扩展 AppCompatTextViewAppCompatButton 等,而不是扩展 TextView 等平台。
  • 不含 AppCompat 的应用应添加 androidx.emoji2:emoji2-views-helper 依赖项,并使用帮助程序与自定义 TextViewEditText 子类集成。

配置自动初始化

  • 应用可以通过将以下代码添加到清单中来停用自动初始化:

     <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