Emoji2

在目前和較舊的裝置上顯示表情符號。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2023 年 2 月 8 日 1.2.0 - 1.3.0-beta02 -

宣告依附元件

如要新增 Emoji2 的依附元件,必須將 Google Maven 存放區新增至專案。詳情請參閱 Google 的 Maven 存放區

在應用程式或模組的 build.gradle 檔案中,新增您需要的構件依附元件:

Groovy

dependencies {
    def emoji2_version = "1.2.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.2.0"

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

如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。

意見回饋

您的意見可協助我們改善 Jetpack。如果您發現新問題,或想提出建議協助改善這個程式庫,請告訴我們。建立新的問題之前,請先查看這個程式庫中的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 說明文件

Emoji2 Emojipicker 1.0 版

1.0.0-alpha01 版

2023 年 1 月 25 日

發布了 androidx.emoji2:emoji2-emojipicker:1.0.0-alpha011.0.0-alpha01 版包含此連結所列的修訂項目

新功能

  • 推出了表情符號挑選器,這可為使用者提供一致的使用者體驗,讓他們在 Android 作業系統原始設備製造商 (OEM) 的裝置和應用程式上,都能使用最新的表情符號。此外還提供最新的表情符號支援和表情符號挑選器 UI,包括膚色和表情符號相容功能。

API 變更

  • 推出了 EmojiPickerView 類別,在具有可點選水平標頭的垂直可捲動檢視畫面中,提供最新的表情符號。
  • 透過 XML 屬性 emojiGridColumns 或函式 setEmojiGridColumns(),可設定表情符號挑選器格線欄。
  • 透過 XML 屬性 emojiGridRows 或函式 setEmojiGridRows() 可設定表情符號選擇器格線列。
  • 透過 setOnEmojiPickedListener() 可設定表情符號挑選事件監聽器,當使用者點選任何表情符號時,事件監聽器即會收到通知。
  • 透過 setRecentEmojiProvider() 可以找出近期表情符號提供者。這是選用函式。如果不設定近期表情符號提供者,程式庫會使用預設的近期表情符號提供者。預設行為定義如下:1) 系統會將選取的表情符號儲存在每個應用程式層級的共用偏好設定中。2) 挑選器會按時間先後進行反向排序,顯示最多 3 列重複選取的表情符號。
  • 推出了 EmojiViewItem 類別,可保存顯示的表情符號及其表情符號變化版本。
  • 推出了 RecentEmojiProvider 介面,可用於實作最近的表情符號清單。recentEmojiProvider 負責提供「最近使用」類別中的表情符號。

1.3 版

1.3.0-beta02 版

2023 年 2 月 8 日

發布 androidx.emoji2:emoji2-*:1.3.0-beta021.3.0-beta02 版包含此連結所列的修訂項目

新功能

  • 此為穩定版本,可支援 Compose 整合功能。

1.3.0-beta01 版

2023 年 1 月 25 日

發布了 androidx.emoji2:emoji2-*:1.3.0-beta011.3.0-beta01 版包含以下修訂項目。

新功能

  • 查詢系統排除項目。
  • 取代自訂繪圖程式碼的時距。
  • 修正背景時距未正確套用至 EmojiSopans 後方的錯誤。
  • 這個版本會在 Compose 中新增支援 EmojiCompat 所需的 API。即將推出的版本預計會支援 EmojiCompat。

1.3.0-alpha01 版

2023 年 1 月 11 日

發布了 androidx.emoji2:emoji2-*:1.3.0-alpha011.3.0-alpha01 版包含以下修訂項目。

適用於低階互動的新 API

  • 查詢系統排除項目
  • 取代自訂繪圖程式碼的時距
  • 修正背景時距未正確套用至 EmojiSopans 後方的錯誤。
  • 這個版本會在 Compose 中新增支援 EmojiCompat 所需的 API。即將推出的版本預計會支援 EmojiCompat。

API 變更

  • 將查詢系統排除項目的功能新增至 TypefaceEmojiRasterizer (I5653e)。
  • 新增新的 API EmojiCompat.SpanFactory,可將預設 EmojiSpan 行為替換為自訂繪圖程式碼和大小程式碼 (Ib69d9)。
  • EmojiCompat 新增至 Compose (I96f37b/139326806)。

修正錯誤

1.2 版

1.2.0 版

2022 年 8 月 10 日

發布了 androidx.emoji2:emoji2-*:1.2.01.2.0 版包含以下修訂項目。

自 1.1.0 版以來的重要變更

本版本的目的在於修正錯誤。自 1.1.0 版以來無新增任何功能或 API。

然而,使用 PrecomputedTextTextView.setText(char[]) 的應用程式應優先改用此版本。

修正的錯誤如下:

  • Emoji2 會捨棄之前已預先計算的文字版面配置,來為 PrecomputedText 新增表情符號。(I47d06b/211231958)
  • 從 Android P 向後移植編輯器當機問題修正至設定使用 emoji2 的 EditText。(Ifd709b/216891011)
  • 修正了 emoji2 載入字型及使用 TextView.setText(char[]) 時的當機問題。(Id511eb/206859724)

1.2.0-rc01 版

2022 年 7 月 27 日

發布了 androidx.emoji2:emoji2-*:1.2.0-rc011.2.0-rc01 版包含以下修訂項目。

  • 自上次 Beta 版發布後沒有任何變更。

1.2.0-beta01 版

2022 年 7 月 13 日

發布了 androidx.emoji2:emoji2-*:1.2.0-beta011.2.0-beta01 版包含此連結所列的修訂項目。

新功能

  • 與前一版相比沒有任何變更 (此版本為支援 Appcompat 版本)。

1.2.0-alpha04 版

2022 年 4 月 20 日

發布了 androidx.emoji2:emoji2-*:1.2.0-alpha041.2.0-alpha04 版包含以下修訂項目。

新功能

  • 此版本沒有任何變更。

1.2.0-alpha03 版

2022 年 4 月 6 日

發布了 androidx.emoji2:emoji2-*:1.2.0-alpha031.2.0-alpha03 版包含以下修訂項目。

新功能

  • 與前一版相比沒有任何變更 (此版本為支援 Appcompat 版本)。

1.2.0-alpha02 版

2022 年 3 月 23 日

發布了 androidx.emoji2:emoji2-*:1.2.0-alpha021.2.0-alpha02 版包含以下修訂項目。

修正錯誤

  • Emoji2 會透過捨棄先前預先計算的文字版面配置,為 PrecomputedText 新增表情符號。(I47d06b/211231958)
  • 從 Android P 至 EditText(設定為使用 emoji2),修正了向後移植編輯器當機問題。(Ifd709b/216891011)
  • 修正了 emoji2 載入字型及使用 TextView.setText(char[]) 時的當機問題。(Id511eb/206859724)

1.2.0-alpha01 版

2022 年 2 月 23 日

發布了 androidx.emoji2:emoji2-*:1.2.0-alpha011.2.0-alpha01 版包含以下修訂項目。

自 1.1.0. 以來沒有變更。

1.1

1.1.0 版

2022 年 2 月 23 日

發布了 androidx.emoji2:emoji2-*:1.1.01.1.0 版包含此連結所列的修訂項目

自 1.0.0 版以來的重要變更

  • emoji2-bundled 包含表情符號 14 字型
  • 新的 getEmojiMatch API 會傳回鍵盤的正確資訊,以確定表情符號在系統字型下方的 EmojiCompat 字型中的顯示方式
  • 修正 NumberKeyListener 錯誤,讓數字輸入能正確篩選半形字元。

1.1.0-rc01 版本

2022 年 2 月 9 日

發布了 androidx.emoji2:emoji2-*:1.1.0-rc011.1.0-rc01 版包含以下修訂項目。

新功能

Beta 版沒有任何變更。

相較於 emoji2 1.0.0 的新功能:

  • emoji2-bundled 含有表情符號 14 字型
  • 新的 getEmojiMatch API 會傳回鍵盤的正確資訊,以確定表情符號在系統字型下方的 EmojiCompat 字型中的顯示方式
  • 修正 NumberKeyListener 錯誤,讓數字輸入能正確篩選半形字元

1.1.0-beta01 版

2022 年 1 月 26 日

發布了 androidx.emoji2:emoji2-*:1.1.0-beta011.1.0-beta01 版包含以下修訂項目。

修正錯誤

  • androidx-emoji2 beta01 版。alpha01 無變更 (Ic61d9)

1.1.0-alpha01 版

2021 年 12 月 15 日

發布了 androidx.emoji2:emoji2-*:1.1.0-alpha011.1.0-alpha01 版包含以下修訂項目。

新功能

  • emoji2-bundled 含有表情符號 14 字型
  • 新的 getEmojiMatch API 會傳回鍵盤的正確資訊,以確定表情符號在系統字型下方的 EmojiCompat 字型中的顯示方式
  • 修正 NumberKeyListener 錯誤,讓數字輸入能正確篩選半形字元

API 變更

  • 新增 API getEmojiMatch,可讓鍵盤更準確地在 EmojiCompat 中查詢表情符號比對行為。
  • 淘汰 hasEmojiGlyph,因為如果測試的字型較平台表情符號字型舊,回傳的布林值就不正確。以 getEmojiMatch 取代。(Ie693d)

修正錯誤

  • Emoji2 不會納入 NumberKeyListener 的執行個體,並允許 TextView 設定語言代碼。
  • Appcompat 不會包含 NumberKeyListener 的執行個體以傳遞至 setKeyListener 中,這可以保證 TextView 正確設定 NumberKeyListeners 的語言代碼。(Ibf113b/207119921)

1.0

1.0.1 版

2021 年 12 月 15 日

發布了 androidx.emoji2:emoji2-*:1.0.11.0.1 版包含以下修訂項目。

修正錯誤

  • Emoji2 不會包含 NumberKeyListener 的執行個體,並允許 TextView 設定語言代碼。
  • Appcompat 不會包含 NumberKeyListener 的執行個體以傳遞至 setKeyListener 中,這可以保證 TextView 正確設定 NumberKeyListeners 的語言代碼。(Ibf113b/207119921)

1.0.0 版

2021 年 11 月 17 日

發布了 androidx.emoji2:emoji2-*:1.0.01.0.0 版包含此連結所列的修訂項目

1.0.0 的主要功能

androidx.emoji2 會將 androidx.emoji 換成額外功能:

  • 縮減 APK 大小與 androidx.emoji
  • 自動設定
  • 已新增為 appcompat 1.4 的依附元件

如要進一步瞭解 androidx.emoji2,請參閱「支援現代表情符號」,並觀看 Android 開發人員高峰會的演講影片「在應用程式中顯示所有表情符號」。

1.0.0-rc01 版

2021 年 10 月 27 日

發布了 androidx.emoji2:emoji2-*:1.0.0-rc011.0.0-rc01 版包含以下修訂項目。

  • 自 beta02 以來沒有變更

Emoji2 1.0.0-beta01 版

2021 年 9 月 15 日

發布了 androidx.emoji2:emoji2-*:1.0.0-beta011.0.0-beta01 版包含以下修訂項目。

API 變更

  • 已將 setLoadingExecutor 新增至 FontRequestEmojiCompatConfig,以取代先前的 setHandler API。這個 API 可讓應用程式設定 FontRequestEmojiCompatConfig 以使用任何背景執行工具。

    這項變更是 androidx.emoji:emoji 的破壞性變更,因此 setHandler 會保留為免人工管理的已淘汰 API 來協助遷移。(I6cd48)

  • EmojiCompat 在 Android 11 上正確設定 EditorInfo.extras

    • 使用 IME 未將 TextText 分類的自訂小工具可能會呼叫 EmojiCompat.updateEditorInfo,藉此通知 IME 支援 EmojiCompat 處理功能。(I1ea9b)

修正錯誤

  • 修正 DefaultEmojiCompatConfig 以正確查詢 API 19 和 28 的表情符號字型提供者。這會修正 emoji2 1.0.0-alpha01 中修正的錯誤。(Ib33d8b/197906329)

1.0.0-alpha03 版

2021 年 6 月 30 日

發布了 androidx.emoji2:emoji2-*:1.0.0-alpha031.0.0-alpha03 版包含以下修訂項目。

新功能

這個版本為錯誤修正穩定版本。

  1. EmojiEditTextHelper 現允許將 null 做為 KeyListener 傳遞。如此一來,平台就能允許將空值套用到支援 EditText 實作的表情符號。
  2. 使用 EmojiCompatInitializer 時可改善初始啟動延遲,以便在第一次活動恢復後觸發。這能讓應用程式啟動作業沒有中斷,避免載入應用程式啟動時從不顯示 UI 的字型。經過短暫的延遲後,EmojiCompat 就會建立執行緒以載入表情符號字型。
  • 為實作延遲功能,現已加入 androidx.emoji2:emoji2androidx.lifecycle:lifecycle-process 的新依附元件。對於已納入生命週期的應用程式 (例如含有 Appcompat 的應用程式),這對 APK 大小的影響幾乎可以忽略。

API 變更

  • 允許 AppCompatEditText 中的空值 KeyListener。這項操作會還原在 1.4.0-alpha01 中新增至 AppCompatEditText 的非空值註解,並在傳遞空值時還原先前的行為。(I21482b/189559345)

修正錯誤

  • 變更 EmojiCompatInitializer,讓第一個 Activity.onResume 之後的字型載入時間延後 500 毫秒。如此一來,活動就能順利執行 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-alpha021.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-alpha011.0.0-alpha01 版包含以下修訂項目。

此初始版本提供的功能

建議為所有應用程式整合 EmojiCompat,以支援 API19 以後的新型表情符號。應用程式中所有使用者產生的內容都含有 🎉。

EmojiCompat 已從 androidx.emoji 構件移至新的 androidx.emoji2,現已在 alpha01 版推出。新構件會取代前一個版本。

AppCompat 1.4.0-alpha01 起,系統會將 emoji2 新增為 AppCompat 的依附元件,並預設啟用 AppCompat 檢視畫面。

emoji2 構件使用 androidx.startup 程式庫推出新的自動設定。您不必再撰寫任何 👨🏽‍💻 程式碼即可顯示 🐻‍❄️。

emoji2 的表情符號變更

  • 已使用 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) 應使用 EmojiTextViewemoji2-views 的相關類別。

如何支援自訂檢視畫面

  • 使用 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