Emoji2

在目前和較舊的裝置上顯示表情符號。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2023 年 12 月 13 日 1.4.0 - - 1.5.0-alpha01

宣告依附元件

如要新增 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")
}

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

意見回饋

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

建立新問題

詳情請參閱 Issue Tracker 說明文件

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-alpha021.0.0-alpha02 版包含此連結所列的修訂項目。

API 變更

  • 為 Java 用戶端新增新的 API,以便提供最近的表情符號。(I39d10)。

修正錯誤

  • 更新表情符號資源以支援表情符號 15.0 (Ib4eb3)
  • 在彈出式視窗中選取表情符號時,請將所有相同的表情符號更新為剛挑選的表情符號 (最近的表情符號列除外)。點選後,請一併朗讀表情符號。(I892c6)。
  • 等待 EmojiCompat 載入後,才會顯示 EmojiPickerView。(I29e03)。

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.5 版

1.5.0-alpha01 版

2023 年 12 月 13 日

發布 androidx.emoji2:emoji2-*:1.5.0-alpha011.5.0-alpha01 版包含此連結所列的修訂項目

新功能

  • emoji2-bundled 包含更新的表情符號字型,以支援 Emoji 15.1。

API 變更

  • 新增執行工具,以便控制 InitCallback 的回呼執行緒。(I32b67)。
  • BundledEmojiCompatConfig 現在會使用執行程式控制載入執行緒。(I00e81)。

1.4 版

1.4.0 版

2023 年 8 月 9 日

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

自 1.3.0 版以來的重要異動

1.4.0-rc01 版

2023 年 7 月 26 日

發布 androidx.emoji2:emoji2-*:1.4.0-rc011.4.0-rc01 版包含此連結所列的修訂項目

API 變更

  • 加入 registerSource 清單 (Iae92f)
  • API 委員會意見回饋:將 TransitionManager.seekTo() 重新命名為 createSeekController()。請調整先前在「TransitionManager.createSeekController()」中新增 TransitionManager.seekTo() 的留言。(Idbeb1)。
  • 新增 ExerciseRouteResult,這不是 DataNoDataConsentRequiredStates 的父類別。新增了 ExerciseRoute 做為獨立類別,用於保存路線的位置資料。(I22eed)。
  • 導入 PagerLayoutInfo,並加入在 Pager 中測量過程後收集到的資訊。另外也導入 PageInfo,這是在 Pager 中評估單一網頁的相關資訊。(Iad003b/283098900)

修正錯誤

  • 我們已配合 Material3 設計更新 ButtonIconButtonTextButton 的顏色。ButtonIconButtonTextButton 的語意角色現在可使用 Modifier.semantics 覆寫。(Ib2495)。
  • 修正 EmojiPickerView 的分頁選取項目和指標後,只要按一下後即會更新。(I4db04)。
  • 顯示表情符號挑選器的 FileNotFoundException (I353e4)
  • 使用 EmojiPickerView 時擷取 WindowManager.BadTokenException (I0a144)

1.4.0-beta05 版

2023 年 6 月 7 日

發布 androidx.emoji2:emoji2-*:1.4.0-beta051.4.0-beta05 版包含此連結所列的修訂項目。

修正錯誤

  • 修正 1.3 中引起的錯誤,會導致 MetricsAffectingSpans (例如 RelativeSizeSpan) 套用兩次。文字版面配置期間,以及 EmojiSpan.draw 中一次。結果大小不正確,因為任何文字大小參數被 Span 變更時可見。(b/283208650)。

1.4.0-beta04 版

2023 年 5 月 24 日

發布 androidx.emoji2:emoji2-*:1.4.0-beta041.4.0-beta04 版包含此連結所列的修訂項目。

此版本修正自 1.0 起的錯誤;如果檢視畫面在字型載入完成後嘗試更新表情符號時距,使用非主處理常式的檢視畫面會擲回例外狀況。目前還沒有解決方法,如果您受到這項錯誤影響,請升級至這個版本或之後升級。

修正錯誤

  • EmojiCompat init 回呼現在會使用每個檢視畫面的處理常式,以主執行緒以外的檢視畫面為主。(Iccbcf)。

1.4.0-beta03 版

2023 年 5 月 10 日

發布 androidx.emoji2:emoji2-*:1.4.0-beta031.4.0-beta03 版包含此連結所列的修訂項目。

修正錯誤

  • 修正表情符號挑選器巢狀彈出式視窗檢視畫面當機問題。(0acc8e)。
  • EmojiCompat getEmojiStart/getEmojiEnd 中擲回早期例外狀況。(26177f)。

1.4.0-beta02 版本

2023 年 4 月 19 日

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

修正錯誤

  • 更新 Lint 基準檔案 (Iaa212)

1.4.0-beta01 版

2023 年 4 月 5 日

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

新功能

androidx.emoji2:emoji2-emojipicker

表情符號挑選器是一種 UI 解決方案,提供新型外觀和風格、最新的表情符號,且易於使用。使用者可以瀏覽及選取表情符號和子類,或選擇最近使用的表情符號。有了這個程式庫,不同原始設備製造商 (OEM) 的應用程式都能為使用者提供多元包容的整合式表情符號體驗,開發人員不必從零開始建立及維護自己的表情符號挑選器。

最新的 Emoji

我們每年都會發布新的表情符號,屆時我們將選擇性加入表情符號挑選器。為確保回溯相容性,我們會在內部執行準確的表情符號可轉譯性檢查,以消除模糊不清。這樣做可確保程式庫與多個 Android 版本和裝置相容。

固定式子類

長按表情符號即可顯示子類選單,例如各種性別或膚色。系統會將您選擇的變化版本儲存在表情符號挑選器中,並在主面板中使用最後選取的變化版本。有了這項功能,使用者只要輕觸一下,就能傳送自己偏好的表情符號變化版本。

最近使用的表情符號

RecentEmojiProvider 負責提供「最近使用」類別中的表情符號。程式庫設有最新的預設表情符號提供者,符合最常見的用途:

  • 所有選取的表情符號都會在共用偏好設定中按應用程式層級儲存。
  • 挑選器會按時間先後進行反向排序,顯示最多 3 列重複選取的表情符號。

如果這項預設行為已足夠,則無需設定 setRecentEmojiProvider() 方法。

使用 EmojiCompat

如果應用程式有 EmojiCompat 例項,系統會在表情符號挑選器中使用該例項,盡可能算繪更多表情符號。如果停用 EmojiCompat,表情符號挑選器仍可正常運作。

如何使用程式庫

如要使用這個程式庫,應用程式開發人員應

  1. androidx.emoji2:emojipicker:$version 匯入 build.gradle

    dependencies {
      implementation "androidx.emoji2:emojipicker:$version"
    }
    
  2. 加載表情符號挑選器檢視畫面,並視需要根據每個表情符號儲存格所需的大小設定 emojiGridRowsemojiGridColumns

    • 您可以選擇不設定,預設值為 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" />
    

程式碼

    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)
  1. 假設您要將所選表情符號附加到 EditText,請使用 setOnEmojiPickedListener()

      emojiPickerView.setOnEmojiPickedListener {
          findViewById<EditText>(R.id.edit_text).append(it.emoji)
      }
    
  2. 您可以選擇設定 RecentEmojiProvider,請參閱範例應用程式,瞭解實作範例。

  3. 視需要自訂樣式。建立自己的樣式來覆寫常見主題屬性,並將樣式套用至 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 介面,請參閱這篇文章

範例應用程式

這個範例應用程式示範了基本用途和下列其他情境:

  • 由於 emojiGridRowsemojiGridColumns 已重設,因此檢視畫面會重新配置。
  • 為了按頻率排序,系統已覆寫最近的表情符號提供者。
  • 自訂樣式。

API 變更

我們更新了表情符號挑選器資料庫,提供下列新的 API:

  • EmojiPickerView 類別,可在具有可點選水平標頭的垂直可捲動檢視畫面中,提供最新的表情符號。
  • 透過 XML 屬性 emojiGridColumnsemojiGridRows,或是 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-alpha011.4.0-alpha01 版包含此連結所列的修訂項目

修正錯誤

  • 修正測試、停用準備測試及清理。

1.3 版

1.3.0 版

2023 年 3 月 22 日

發布 androidx.emoji2:emoji2-*:1.3.01.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-beta03androidx.emoji2:emoji2-views:1.3.0-beta03androidx.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-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-beta01查看 1.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-alpha03查看 1.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.0查看 1.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-beta01查看 1.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