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-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.3 版
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。即將推出的版本預計會支援 EmojiCompat。
1.3.0-alpha01 版
2023 年 1 月 11 日
發布了 androidx.emoji2:emoji2-*:1.3.0-alpha01
。1.3.0-alpha01 版包含以下修訂項目。
適用於低階互動的新 API
- 查詢系統排除項目
- 取代自訂繪圖程式碼的時距
- 修正背景時距未正確套用至
EmojiSopans
後方的錯誤。 - 這個版本會在 Compose 中新增支援
EmojiCompat
所需的 API。即將推出的版本預計會支援 EmojiCompat。
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
會捨棄之前已預先計算的文字版面配置,來為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 至 EditText(設定為使用 emoji2),修正了向後移植編輯器當機問題。(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 包含表情符號 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
含有表情符號 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
含有表情符號 14 字型- 新的
getEmojiMatch
API 會傳回鍵盤的正確資訊,以確定表情符號在系統字型下方的 EmojiCompat 字型中的顯示方式 - 修正
NumberKeyListener
錯誤,讓數字輸入能正確篩選半形字元
API 變更
- 新增 API
getEmojiMatch
,可讓鍵盤更準確地在 EmojiCompat 中查詢表情符號比對行為。 - 淘汰
hasEmojiGlyph
,因為如果測試的字型較平台表情符號字型舊,回傳的布林值就不正確。以getEmojiMatch
取代。(Ie693d)
修正錯誤
- Emoji2 不會納入
NumberKeyListener
的執行個體,並允許TextView
設定語言代碼。 - Appcompat 不會包含
NumberKeyListener
的執行個體以傳遞至setKeyListener
中,這可以保證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 不會包含
NumberKeyListener
的執行個體以傳遞至setKeyListener
中,這可以保證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 換成額外功能:
- 縮減 APK 大小與 androidx.emoji
- 自動設定
- 已新增為 appcompat 1.4 的依附元件
如要進一步瞭解 androidx.emoji2,請參閱「支援現代表情符號」,並觀看 Android 開發人員高峰會的演講影片「在應用程式中顯示所有表情符號」。
1.0.0-rc01 版
2021 年 10 月 27 日
發布了 androidx.emoji2:emoji2-*:1.0.0-rc01
。1.0.0-rc01 版包含以下修訂項目。
- 自 beta02 以來沒有變更
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
- 使用 IME 未將 TextText 分類的自訂小工具可能會呼叫
EmojiCompat.updateEditorInfo
,藉此通知 IME 支援 EmojiCompat 處理功能。(I1ea9b)
- 使用 IME 未將 TextText 分類的自訂小工具可能會呼叫
修正錯誤
- 修正
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 時可改善初始啟動延遲,以便在第一次活動恢復後觸發。這能讓應用程式啟動作業沒有中斷,避免載入應用程式啟動時從不顯示 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,以支援 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
) 應使用EmojiTextView
及emoji2-views
的相關類別。
如何支援自訂檢視畫面
- 使用 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
。