表情符號挑選器

表情符號挑選器是一種 UI 解決方案,可提供新穎的外觀和風格、最新的表情符號,以及簡易的操作方式。使用者可以瀏覽及選取表情符號及其變化版本,或從最近使用的表情符號中選擇。

圖 1. 表情符號挑選器

有了這個程式庫,來自不同來源的應用程式就能為使用者提供包容且統一的表情符號體驗,開發人員也不必從頭開始建構及維護自己的表情符號挑選器。

功能

表情符號挑選器提供下列功能。

最新的表情符號

表情符號挑選器會挑選新發布的表情符號加入。表情符號挑選器與多種 Android 版本和裝置相容。

固定式變化版本

長按表情符號,即可顯示變化版本選單,例如不同性別或膚色。您選擇的變化版本會儲存在表情符號挑選器中,而主面板會使用上次選取的變化版本。

有了這項功能,使用者只要輕觸一下,就能傳送所需的表情符號變化版本。

表情符號變化版本
圖 2. 表情符號變化版本。

最近使用的表情符號

最近使用的表情符號
圖 3.最近使用的表情符號。

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

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

如果這個預設行為已足夠,您不需要使用 setRecentEmojiProvider()

不過,您可能需要自訂供應商行為。以下列舉一些常見的情況:

  • 您想為每個使用者帳戶儲存不同的表情符號。
  • 您想要使用共用偏好設定以外的資料儲存空間。
  • 您想依頻率排序,顯示最近使用的表情符號。

接著,您可以實作 RecentEmojiProvider 介面,並使用 setRecentEmojiProvider() 進行設定。

方向選取器

Emoji 15.1 起,表情符號挑選器便支援雙向表情符號。使用者可以輕觸雙向切換鈕,在左向和右向版本的表情符號之間切換。

雙向左側表情符號

圖 4. 雙向表情符號朝左。

雙向右邊表情符號

圖 5. 雙向表情符號朝右。

多人表情符號選取器

使用者可以按住情侶表情符號,查看多人物表情符號選項。

按住表情符號情侶

圖 6. 按住一組表情符號,即可顯示多個人表情符號選項。

輕觸左邊的表情符號的人

圖 7. 選取左半部的表情符號人物。

輕觸右側的表情符號人物

圖 8. 選取右半部表情符號人物。

當使用者選取表情符號情侶的左半或右半表情符號人物時,選取器會在右下方顯示預覽畫面,如圖 7 和 8 所示。選取表情符號組合中的兩個節點後,使用者就能選取預覽畫面來組合自訂表情符號組合。

EmojiCompat 的相容性

如果啟用此功能,表情符號挑選器會使用 EmojiCompat 例項,盡可能轉譯表情符號。不過,表情符號挑選器不需要 EmojiCompat

必要條件

應用程式必須指定 Android 5.0 (API 級別 21) 以上版本。

使用程式庫

  1. 在應用程式的 build.gradle 檔案中匯入 androidx.emoji2:emojipicker:$version

    dependencies {
        implementation "androidx.emoji2:emojipicker:$version"
    }
    
  2. 以 XML 格式顯示表情符號挑選器檢視畫面,並視需要設定 emojiGridRowsemojiGridColumns

    • emojiGridColumns 的預設數量為 9。
    • 列數量會根據父項檢視畫面高度和 emojiGridColumns 的值計算而得。
    • 請為 emojiGridRows 使用浮點值,表示使用者可以捲動畫面查看更多表情符號。
    <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)
    
  3. 使用 setOnEmojiPickedListener() 將所選表情符號附加至檢視畫面。舉例來說,如要附加至 EditText,請執行下列步驟:

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

  5. 您可以視需要自訂樣式。建立您自己的樣式,以便覆寫常見的主題屬性,並將樣式套用至 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" />
    

範例應用程式

表情符號挑選器範例應用程式示範基本用途以及其他情境:

  • 重設 emojiGridRowsemojiGridColumns 時,重新計算版面配置。
  • 覆寫的近期表情符號提供者,會依頻率排序。
  • 其他樣式自訂。