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。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 說明文件

Emoji2 Emojipicker 1.0 版

1.5.0 版本

2024 年 9 月 4 日

發布 androidx.emoji2:emoji2-*:1.5.0。1.5.0 版包含這些修訂版本

自 1.4.0 版以來的重要異動

  • 支援 emoji 15.1 和雙向表情符號選取器 UI。只要按一下雙向切換鈕,使用者就能在左向和右向版本的表情符號之間切換。
  • 支援多滑表情符號選取器。長按情侶表情符號,即可顯示零人狀態的多人表情符號選取器。使用者輕觸表情符號的左半部時,右下方的表情符號預覽畫面會隨之更新。使用者選取表情符號的兩個半部時,右下方的表情符號預覽畫面會顯示整個表情符號,方便使用者直接輸入。

1.0.0-alpha03 版本

2023 年 3 月 8 日

發布 androidx.emoji2:emoji2-emojipicker:1.0.0-alpha03查看 1.0.0-alpha03 版的修訂項

修正錯誤

  • 移除不必要的資源,並將程式庫大小縮減約 0.3 MB。

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 版本

2024 年 9 月 4 日

發布 androidx.emoji2:emoji2-*:1.5.0。1.5.0 版包含這些修訂版本

自 1.4.0 版以來的重要異動

  • 支援 emoji 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 存取權的手動設定,因為在使用 AGP 7.3 以上版本 (例如 R8 3.3 版) 的 R8 時,以及在使用 AGP 8.1 以上版本 (例如 D8 8.1 版) 的所有版本時,系統會透過 API 模擬功能自動執行此操作。建議未使用 AGP 的用戶端更新至 D8 8.1 以上版本。詳情請參閱這篇文章。(If6b4cb/345472586)
  • EmojiPickerView 的分頁選取和指標會在點擊後更新。(146b02b/288261054)
  • EmojiPickerView 的分頁選取和指標已損壞。(5e1f14b/273883688)

1.5.0-beta01 版

2024 年 7 月 10 日

發布 androidx.emoji2:emoji2-*:1.5.0-beta01。1.5.0-beta01 版包含這些修訂項目

新功能

  • 支援 emoji 15.1 和雙向表情符號選取 UI。
  • 支援多種膚色選項的重新設計。

修正錯誤

  • EmojiPickerView 的分頁選取和指標更新會落後一個點擊動作。(146b02b/288261054)
  • EmojiPickerView 的分頁選取和指標已損壞。(5e1f14b/273883688)。

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.seekTo() 新增至 TransitionManager.createSeekController()。(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 初始化回呼現在會使用每個檢視畫面的處理常式,並尊重非主執行緒的檢視畫面。(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) 的應用程式就能為使用者提供多元包容的整合式表情符號,而且開發人員不必從頭開始打造及維護自己的表情符號挑選器。

最新表情符號

每年都會推出新的表情符號,我們會在表情符號挑選器中挑選並加入這些表情符號。為確保向後相容性,我們會在內部執行準確的表情符號轉譯功能檢查,以免出現 tofu。這樣可確保程式庫在多個 Android 版本和裝置上相容。

固定式變化版本

長按表情符號即可顯示子類選單,例如不同性別或膚色。你選擇的變化版本會儲存在表情符號挑選器中,主面板則會使用最後一個選取的變化版本。有了這項功能,使用者只要輕觸一下,就能傳送所需的表情符號變化版本。

最近使用的表情符號

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

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

如果這項預設行為已足夠,就不必設定 setRecentEmojiProvider() 方法。

與 EmojiCompat 搭配使用

如果應用程式有 EmojiCompat 例項,表情符號挑選器會使用該例項盡可能顯示表情符號。如果 EmojiCompat 已停用,表情符號挑選器仍可正常運作。

如何使用程式庫

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

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

    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 變更

Emoji Picker 程式庫已更新,新增下列 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