پشتیبانی از ایموجی های مدرن

روش نوشتن را امتحان کنید
Jetpack Compose ابزار رابط کاربری پیشنهادی برای اندروید است. یاد بگیرید که چگونه از ایموجی‌ها در Compose پشتیبانی کنید.

مجموعه استاندارد ایموجی‌ها سالانه توسط یونیکد به‌روزرسانی می‌شود، زیرا استفاده از ایموجی‌ها برای انواع برنامه‌ها به سرعت در حال افزایش است.

اگر برنامه شما محتوای اینترنتی را نمایش می‌دهد یا ورودی متن ارائه می‌دهد، اکیداً توصیه می‌کنیم از جدیدترین فونت‌های ایموجی پشتیبانی کنید. در غیر این صورت، ایموجی‌های جدیدتر ممکن است به صورت یک کادر مربع کوچک به نام توفو (☐) یا سایر توالی‌های ایموجی نادرست نمایش داده شوند.

نسخه‌های اندروید ۱۱ (سطح API 30) و پایین‌تر نمی‌توانند فونت ایموجی را به‌روزرسانی کنند، بنابراین برنامه‌هایی که آنها را در این نسخه‌ها نمایش می‌دهند باید به‌صورت دستی به‌روزرسانی شوند.

در ادامه نمونه‌هایی از ایموجی‌های مدرن آمده است.

مثال‌ها نسخه
🫩 🪉 🇨🇶 ۱۶.۰ (سپتامبر ۲۰۲۴)
🐦‍🔥 🧑‍🧑‍🧒‍🧒 👩🏽‍🦽‍➡️ 🇲🇶 ۱۵.۱ (سپتامبر ۲۰۲۳)
🩷 🫸🏼 🐦‍⬛ ۱۵.۰ (سپتامبر ۲۰۲۲)
🫠 🫱🏼‍🫲🏿 🫰🏽 ۱۴.۰ (سپتامبر ۲۰۲۱)
😶‍🌫️ 🧔🏻‍♀️ 🧑🏿‍❤️‍🧑🏾 ۱۳.۱ (سپتامبر ۲۰۲۰)
🥲 🥷🏿 🐻‍❄️ ۱۳.۰ (مارس ۲۰۲۰)
🧑🏻‍🦰 🧑🏿‍🦯 👩🏻‍🤝‍👩🏼 ۱۲.۱ (اکتبر ۲۰۱۹)
🦩 🦻🏿 👩🏼‍🤝‍👩🏻 ۱۲.۰ (فوریه ۲۰۱۹)

کتابخانه androidx.emoji2:emoji2 سازگاری ساده‌تری با نسخه‌های پایین‌تر اندروید ارائه می‌دهد. کتابخانه emoji2 یک وابستگی به کتابخانه AppCompat است و برای کار به پیکربندی بیشتری نیاز ندارد.

پشتیبانی از ایموجی در نوشتن

نسخه نهایی (BOM) مارس ۲۰۲۳ ( رابط کاربری Compose 1.4 ) از جدیدترین نسخه ایموجی، از جمله سازگاری با نسخه‌های قدیمی‌تر اندروید تا API 21، پشتیبانی می‌کند. این صفحه نحوه پیکربندی ایموجی‌های مدرن در سیستم View را پوشش می‌دهد. برای اطلاعات بیشتر به صفحه Emoji in Compose مراجعه کنید.

پیش‌نیازها

برای تأیید اینکه برنامه شما به درستی ایموجی‌های جدیدتر را نمایش می‌دهد، آن را روی دستگاهی با اندروید ۱۰ (سطح API ۲۹) یا پایین‌تر اجرا کنید. این صفحه شامل ایموجی‌های مدرنی است که می‌توانید برای آزمایش نمایش دهید.

از AppCompat برای پشتیبانی از جدیدترین ایموجی‌ها استفاده کنید

AppCompat 1.4 از ایموجی‌ها پشتیبانی می‌کند.

برای استفاده از AppCompat برای پشتیبانی از ایموجی، مراحل زیر را انجام دهید:

  1. بررسی کنید که ماژول شما به کتابخانه AppCompat نسخه 1.4.0-alpha01 یا بالاتر وابسته باشد.

    build.gradle
    
    // Ensure version is 1.4.0-alpha01 or higher.
    implementation "androidx.appcompat:appcompat.$appcompatVersion"
    
  2. مطمئن شوید که تمام فعالیت‌هایی که متن را نمایش می‌دهند، از کلاس AppCompatActivity ارث‌بری می‌کنند.

    کاتلین

    MyActivity.kt
    
    class MyActivity: AppCompatActivity {
    ...
    }

    جاوا

    MyActivity.java
    
    class MyActivity extends AppCompatActivity {
    ...
    }
  3. با اجرای برنامه روی دستگاهی که اندروید ۱۰ یا پایین‌تر دارد و نمایش رشته آزمایشی زیر، یکپارچگی آن را آزمایش کنید. مطمئن شوید که همه کاراکترها به درستی رندر می‌شوند.

    • ۱۶.۰: 🫩، 🪉، 🇨🇶
    • ۱۵.۱: 🐦‍🔥، 🧑‍🧑‍🧒‍🧒، 👩🏽‍🦽‍➡️، 🇲🇶
    • ۱۵.۰: 🩷، 🫸🏼، 🐦‍⬛
    • ۱۴.۰: 🫠، 🫱🏼‍🫲🏿، 🫰🏽
    • ۱۳.۱: 😶‍🌫️، 🧔🏻‍♀️، 🧑🏿‍❤️‍🧑🏾
    • ۱۳.۰: 🥲، 🥷🏿، 🐻‍❄️
    • ۱۲.۱: 🧑🏻‍🦰، 🧑🏿‍🦯، 👩🏻‍🤝‍👩🏼
    • ۱۲.۰: 🦩، 🦻🏿، 👩🏼‍🤝‍👩🏻

برنامه شما به طور خودکار ایموجی‌های سازگار با نسخه‌های قبلی را در تمام دستگاه‌هایی که فونت‌های قابل دانلود سازگار با emoji2 را ارائه می‌دهند، مانند دستگاه‌هایی که از سرویس‌های گوگل پلی پشتیبانی می‌کنند، نمایش می‌دهد.

اگر برنامه شما از AppCompat استفاده می‌کند اما tofu (☐) را نمایش می‌دهد

در برخی موارد، حتی اگر کتابخانه AppCompat را اضافه کنید، ممکن است برنامه شما به جای ایموجی مناسب، توفو را نمایش دهد. در ادامه توضیحات و راه‌حل‌های ممکن ارائه شده است.

شما برنامه را روی یک دستگاه اخیراً فلش شده یا یک شبیه‌ساز جدید اجرا می‌کنید.

داده‌های سرویس گوگل پلی برنامه را پاک کنید تا هرگونه ذخیره فونت که ممکن است هنگام راه‌اندازی اتفاق بیفتد، پاک شود. این کار معمولاً پس از چند ساعت مشکل را حل می‌کند.

برای پاک کردن داده‌های برنامه، مراحل زیر را انجام دهید:

  1. تنظیمات (Settings) را در دستگاه اندروید خود باز کنید.

  2. روی برنامه‌ها و اعلان‌ها ضربه بزنید.

  3. روی «مشاهده همه برنامه‌ها» یا «اطلاعات برنامه» ضربه بزنید.

  4. در بین برنامه‌ها اسکرول کنید و روی سرویس‌های گوگل پلی (Google Play services) ضربه بزنید.

  5. روی فضای ذخیره‌سازی و حافظه پنهان ضربه بزنید.

  6. روی پاک کردن حافظه پنهان (Clear cache) ضربه بزنید.

برنامه شما از کلاس مرتبط با متن AppCompat استفاده نمی‌کند.

این اتفاق می‌تواند در صورتی رخ دهد که AppCompatActivity اکستند نکنید یا اگر یک view را در کد، مانند TextView نمونه‌سازی کنید. موارد زیر را بررسی کنید:

  • این فعالیت از AppCompatActivity ارث بری می‌کند.
  • اگر می‌خواهید view را با کد ایجاد کنید، از زیرکلاس AppCompat صحیح استفاده کنید.

AppCompatActivity هنگام inflat کردن XML، به طور خودکار AppCompatTextView به جای TextView inflat می‌کند، بنابراین نیازی به به‌روزرسانی XML خود ندارید.

گوشی مورد آزمایش از فونت‌های قابل دانلود پشتیبانی نمی‌کند

تأیید کنید که DefaultEmojiCompatConfig.create یک پیکربندی غیر تهی (non-null) برمی‌گرداند.

یک شبیه‌ساز در سطح API قدیمی‌تر، سرویس‌های گوگل پلی را ارتقا نداده است.

هنگام استفاده از یک شبیه‌ساز در سطح API قدیمی‌تر، ممکن است لازم باشد سرویس‌های گوگل پلی همراه با emoji2 را به‌روزرسانی کنید تا ارائه‌دهنده فونت را پیدا کنید. برای انجام این کار، در شبیه‌ساز به فروشگاه گوگل پلی وارد شوید.

برای تأیید نصب نسخه سازگار، موارد زیر را انجام دهید:

  1. دستور زیر را اجرا کنید:

    adb shell dumpsys package com.google.android.gms | grep version
    
  2. بررسی کنید که versionCode بالاتر از 211200000 باشد.

پشتیبانی از ایموجی بدون AppCompat

اگر برنامه شما نمی‌تواند AppCompat شامل شود، می‌تواند مستقیماً از emoji2 استفاده کند. این کار به کار بیشتری نیاز دارد، بنابراین فقط در صورتی از این روش استفاده کنید که برنامه شما نتواند از AppCompat استفاده کند.

برای پشتیبانی از ایموجی‌ها بدون کتابخانه AppCompat ، مراحل زیر را انجام دهید:

  1. در فایل build.gradle برنامه خود، emoji2 و emoji2-views را وارد کنید.

    build.gradle
    
    def emojiVersion = "1.0.0-alpha03"
    implementation "androidx.emoji2:emoji2:$emojiVersion"
    implementation "androidx.emoji2:emoji2-views:$emojiVersion"
    

    ماژول emoji2-views زیرکلاس‌هایی از TextView ، Button و EditText ارائه می‌دهد که EmojiCompat پیاده‌سازی می‌کنند. از آن در برنامه‌ای که شامل AppCompat است استفاده نکنید، زیرا از قبل EmojiCompat پیاده‌سازی کرده است.

  2. در XML و کد - هر جا که از TextView ، EditText یا Button استفاده می‌کنید - به جای آن از EmojiTextView ، EmojiEditText یا EmojiButton استفاده کنید.

    activity_main.xml
    
    <androidx.emoji2.widget.EmojiTextView ... />
    <androidx.emoji2.widget.EmojiEditText ... />
    <androidx.emoji2.widget.EmojiButton ... />
    

    با اضافه کردن ماژول emoji2 ، سیستم از ارائه‌دهنده فونت‌های قابل دانلود پیش‌فرض برای بارگذاری خودکار فونت ایموجی، اندکی پس از راه‌اندازی برنامه استفاده می‌کند. هیچ پیکربندی دیگری لازم نیست.

  3. برای آزمایش ادغام، برنامه خود را روی دستگاهی با اندروید ۱۱ یا پایین‌تر اجرا کنید که رشته‌های آزمایشی زیر را نمایش می‌دهد. مطمئن شوید که همه کاراکترها به درستی رندر می‌شوند.

    • ۱۶.۰: 🫩، 🪉، 🇨🇶
    • ۱۵.۱: 🐦‍🔥، 🧑‍🧑‍🧒‍🧒، 👩🏽‍🦽‍➡️، 🇲🇶
    • ۱۵.۰: 🩷، 🫸🏼، 🐦‍⬛
    • ۱۴.۰: 🫠، 🫱🏼‍🫲🏿، 🫰🏽
    • ۱۳.۱: 😶‍🌫️، 🧔🏻‍♀️، 🧑🏿‍❤️‍🧑🏾
    • ۱۳.۰: 🥲، 🥷🏿، 🐻‍❄️
    • ۱۲.۱: 🧑🏻‍🦰، 🧑🏿‍🦯، 👩🏻‍🤝‍👩🏼
    • ۱۲.۰: 🦩، 🦻🏿، 👩🏼‍🤝‍👩🏻

استفاده از EmojiCompat بدون ابزارک‌ها

EmojiCompat از EmojiSpan برای رندر کردن تصاویر صحیح استفاده می‌کند. بنابراین، باید هر شیء CharSequence داده شده را به یک شیء Spanned با اشیاء EmojiSpan تبدیل کند. کلاس EmojiCompat متد process() را برای تبدیل CharSequences به نمونه‌های Spanned ارائه می‌دهد. با استفاده از این متد، می‌توانید process() در پس‌زمینه فراخوانی کرده و نتایج را ذخیره کنید، که این امر عملکرد برنامه شما را بهبود می‌بخشد.

کاتلین

val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")

جاوا

CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");

استفاده از EmojiCompat برای ویرایشگرهای متد ورودی

کلاس EmojiCompat به کیبوردها اجازه می‌دهد تا ایموجی‌های پشتیبانی‌شده توسط برنامه‌ای که با آن در تعامل هستند را رندر کنند. ویرایشگرهای متد ورودی (IME) می‌توانند از متد getEmojiMatch() برای بررسی اینکه آیا یک نمونه از EmojiCompat قادر به رندر کردن یک ایموجی است یا خیر، استفاده کنند. این متد یک CharSequence از یک ایموجی را دریافت می‌کند و اگر EmojiCompat بتواند ایموجی را شناسایی و رندر کند، true را برمی‌گرداند.

صفحه‌کلید همچنین می‌تواند نسخه EmojiCompat که برنامه از آن پشتیبانی می‌کند را بررسی کند تا مشخص شود کدام ایموجی را باید در پالت رندر کند. برای بررسی نسخه، در صورت وجود، صفحه‌کلید می‌تواند کلیدهای زیر را در بسته EditorInfo.extras جستجو کند:

  • EDITOR_INFO_METAVERSION_KEY : نشان‌دهنده‌ی نسخه‌ی فراداده‌ی ایموجی است که برنامه از آن استفاده می‌کند. اگر این کلید وجود نداشته باشد، برنامه از EmojiCompat استفاده نمی‌کند.
  • EDITOR_INFO_REPLACE_ALL_KEY : اگر کلید وجود داشته باشد و روی true تنظیم شده باشد، برنامه EmojiCompat طوری پیکربندی می‌کند که تمام ایموجی‌ها را جایگزین کند، حتی اگر در سیستم وجود داشته باشند.

درباره نحوه پیکربندی یک نمونه از EmojiCompat بیشتر بدانید.

استفاده از ایموجی در نماهای سفارشی

اگر برنامه شما دارای نماهای سفارشی است که زیرکلاس‌های مستقیم یا غیرمستقیم TextView هستند - برای مثال، Button ، Switch یا EditText - و آن نماها می‌توانند محتوای تولید شده توسط کاربر را نمایش دهند، هر کدام باید EmojiCompat پیاده‌سازی کنند.

این فرآیند بسته به اینکه برنامه شما از کتابخانه AppCompat استفاده می‌کند یا خیر، متفاوت است.

افزودن نماهای سفارشی برای برنامه‌ها با AppCompat

اگر برنامه شما از AppCompat استفاده می‌کند، به جای پیاده‌سازی پلتفرم، پیاده‌سازی AppCompat را گسترش دهید. از جدول زیر به عنوان راهنما برای نحوه گسترش نماهای خود در AppCompat استفاده کنید:

به جای تمدید ... گسترش
TextView AppCompatTextView
EditText AppCompatEditText
ToggleButton AppCompatToggleButton
Switch SwitchCompat
Button AppCompatButton
CheckedTextView AppCompatCheckedTextView
RadioButton AppCompatRadioButton
CheckBox AppCompatCheckBox
AutoCompleteTextView AppCompatAutoCompleteTextView
MultiAutoCompleteTextView AppCompatMultiAutoCompleteTextView

افزودن نماهای سفارشی برای برنامه‌ها بدون AppCompat

اگر برنامه شما از AppCompat استفاده نمی‌کند، از کمک‌کننده‌های ادغام نما در ماژول emoji2-views-helper که برای استفاده در نماهای سفارشی طراحی شده‌اند، استفاده کنید. اینها کمک‌کننده‌هایی هستند که کتابخانه AppCompat برای پیاده‌سازی پشتیبانی از ایموجی استفاده می‌کند.

برای پشتیبانی از نماهای سفارشی برای برنامه‌هایی که از AppCompat استفاده نمی‌کنند، مراحل زیر را انجام دهید.

  1. کتابخانه emoji2-views-helper را اضافه کنید:

    implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
    
  2. برای افزودن EmojiTextViewHelper یا EmojiEditTextHelper به نماهای سفارشی برنامه خود، دستورالعمل‌ها را دنبال کنید.

  3. با اجرای برنامه روی دستگاهی که اندروید ۱۰ یا پایین‌تر دارد و نمایش رشته آزمایشی زیر، یکپارچگی آن را آزمایش کنید. مطمئن شوید که همه کاراکترها به درستی رندر می‌شوند.

    • ۱۶.۰: 🫩، 🪉، 🇨🇶
    • ۱۵.۱: 🐦‍🔥، 🧑‍🧑‍🧒‍🧒، 👩🏽‍🦽‍➡️، 🇲🇶
    • ۱۵.۰: 🩷، 🫸🏼، 🐦‍⬛
    • ۱۴.۰: 🫠، 🫱🏼‍🫲🏿، 🫰🏽
    • ۱۳.۱: 😶‍🌫️، 🧔🏻‍♀️، 🧑🏿‍❤️‍🧑🏾
    • ۱۳.۰: 🥲، 🥷🏿، 🐻‍❄️
    • ۱۲.۱: 🧑🏻‍🦰، 🧑🏿‍🦯، 👩🏻‍🤝‍👩🏼
    • ۱۲.۰: 🦩، 🦻🏿، 👩🏼‍🤝‍👩🏻

ویژگی‌های اختیاری برای کار با ایموجی ۲

بعد از اینکه کتابخانه emoji2 را در برنامه خود وارد کردید، می‌توانید ویژگی‌های اختیاری که در این بخش توضیح داده شده است را اضافه کنید.

پیکربندی emoji2 برای استفاده از فونت متفاوت یا ارائه دهنده فونت قابل دانلود

برای پیکربندی emoji2 برای استفاده از یک فونت یا ارائه دهنده فونت قابل دانلود متفاوت، موارد زیر را انجام دهید:

  1. با اضافه کردن کد زیر به مانیفست، EmojiCompatInitializer را غیرفعال کنید:

    <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>
  2. یکی از موارد زیر را انجام دهید:

    • با فراخوانی DefaultEmojiCompatConfiguration.create(context) از پیکربندی پیش‌فرض استفاده کنید.

    • پیکربندی خودتان را برای بارگذاری فونت‌ها از منبع دیگری با استفاده از EmojiCompat.Config ایجاد کنید. این کلاس گزینه‌های مختلفی برای تغییر رفتار EmojiCompat شما ارائه می‌دهد، همانطور که در بخش بعدی توضیح داده شده است.

رفتار EmojiCompat خود را اصلاح کنید

شما می‌توانید از یک نمونه از EmojiCompat.Config برای تغییر رفتار EmojiCompat استفاده کنید.

مهم‌ترین گزینه پیکربندی، setMetadataLoadStrategy() است که زمان بارگذاری فونت EmojiCompat را کنترل می‌کند. بارگذاری فونت به محض فراخوانی EmojiCompat.load() آغاز می‌شود و این باعث می‌شود هرگونه دانلود لازم انجام شود. سیستم یک thread برای دانلود فونت ایجاد می‌کند، مگر اینکه برنامه شما چنین thread ای را فراهم کند.

LOAD_STRATEGY_MANUAL به شما امکان می‌دهد زمان فراخوانی EmojiCompat.load() را کنترل کنید، و LOAD_STRATEGY_DEFAULT باعث می‌شود بارگذاری به صورت همزمان در فراخوانی EmojiCompat.init() شروع شود.

اکثر برنامه‌ها از LOAD_STRATEGY_MANUAL استفاده می‌کنند تا بتوانند روند و زمان بارگذاری فونت را کنترل کنند. برنامه شما باید تا پس از نمایش اولین صفحه نمایش، بارگذاری را به تعویق بیندازد تا از ایجاد تأخیر در شروع به کار جلوگیری شود. EmojiCompatInitializer از این رویه پیروی می‌کند و بارگذاری فونت ایموجی را تا پس از ادامه یافتن اولین صفحه نمایش به تعویق می‌اندازد.

برای تنظیم سایر جنبه‌های پیکربندی، از متدهای زیر از کلاس پایه استفاده کنید:

  • setReplaceAll() : تعیین می‌کند که آیا EmojiCompat تمام ایموجی‌هایی را که پیدا می‌کند با نمونه‌هایی از EmojiSpan جایگزین کند یا خیر. به طور پیش‌فرض، وقتی EmojiCompat استنباط می‌کند که سیستم می‌تواند یک ایموجی را رندر کند، آن ایموجی را جایگزین نمی‌کند. وقتی روی true تنظیم شود، EmojiCompat تمام ایموجی‌ها را با اشیاء EmojiSpan جایگزین می‌کند.
  • setEmojiSpanIndicatorEnabled() : نشان می‌دهد که آیا EmojiCompat یک ایموجی را با یک شیء EmojiSpan جایگزین می‌کند یا خیر. وقتی روی true تنظیم شود، EmojiCompat یک پس‌زمینه برای EmojiSpan ترسیم می‌کند. این متد عمدتاً برای اهداف اشکال‌زدایی استفاده می‌شود.
  • setEmojiSpanIndicatorColor : رنگ را برای نشان دادن یک EmojiSpan تنظیم می‌کند. مقدار پیش‌فرض آن GREEN است.
  • registerInitCallback() : به برنامه در مورد وضعیت مقداردهی اولیه EmojiCompat اطلاع می‌دهد.

اضافه کردن شنونده‌های مقداردهی اولیه

کلاس‌های EmojiCompat و EmojiCompat.Config متدهای registerInitCallback() و unregisterInitCallback() را برای ثبت و لغو ثبت فراخوانی‌های اولیه ارائه می‌دهند. برنامه شما از این فراخوانی‌های اولیه برای منتظر ماندن تا مقداردهی اولیه EmojiCompat قبل از پردازش ایموجی در یک نخ پس‌زمینه یا در یک نمای سفارشی استفاده می‌کند.

برای استفاده از این متدها، یک نمونه از کلاس EmojiCompat.InitCallback ایجاد کنید. این متدها را فراخوانی کرده و نمونه‌ای از کلاس EmojiCompat.InitCallback را به آن ارسال کنید. هنگامی که مقداردهی اولیه موفقیت‌آمیز باشد، کلاس EmojiCompat متد onInitialized() را فراخوانی می‌کند. اگر کتابخانه در مقداردهی اولیه ناموفق باشد، کلاس EmojiCompat متد onFailed() را فراخوانی می‌کند.

برای بررسی وضعیت مقداردهی اولیه در هر نقطه، متد getLoadState() را فراخوانی کنید. این متد یکی از مقادیر زیر را برمی‌گرداند: LOAD_STATE_LOADING ، LOAD_STATE_SUCCEEDED یا LOAD_STATE_FAILED .

پشتیبانی از فونت‌های همراه با emoji2

شما می‌توانید از مصنوع emoji2-bundled برای قرار دادن یک فونت ایموجی در برنامه خود استفاده کنید. با این حال، از آنجا که فونت NotoColorEmoji بیش از 10 مگابایت است، اکیداً توصیه می‌کنیم که برنامه شما در صورت امکان از فونت‌های قابل دانلود استفاده کند. مصنوع emoji2-bundled برای برنامه‌هایی در دستگاه‌هایی در نظر گرفته شده است که از فونت‌های قابل دانلود پشتیبانی نمی‌کنند.

برای استفاده از مصنوع emoji2-bundled ، موارد زیر را انجام دهید:

  1. مصنوعات emoji2-bundled و emoji2 را اضافه کنید:

    implementation "androidx.emoji2:emoji2:$emojiVersion"
    implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
    
  2. emoji2 طوری پیکربندی کنید که از پیکربندی همراه استفاده کند:

    کاتلین

    EmojiCompat.init(BundledEmojiCompatConfig(context))

    جاوا

    EmojiCompat.init(new BundledEmojiCompatConfig(context));
  3. با دنبال کردن مراحل قبلی برای گنجاندن emojicompat با یا بدون AppCompat ادغام را آزمایش کنید. مطمئن شوید که رشته آزمایشی به درستی نمایش داده می‌شود.

    • ۱۶.۰: 🫩، 🪉، 🇨🇶
    • ۱۵.۱: 🐦‍🔥، 🧑‍🧑‍🧒‍🧒، 👩🏽‍🦽‍➡️، 🇲🇶
    • ۱۵.۰: 🩷، 🫸🏼، 🐦‍⬛
    • ۱۴.۰: 🫠، 🫱🏼‍🫲🏿، 🫰🏽
    • ۱۳.۱: 😶‍🌫️، 🧔🏻‍♀️، 🧑🏿‍❤️‍🧑🏾
    • ۱۳.۰: 🥲، 🥷🏿، 🐻‍❄️
    • ۱۲.۱: 🧑🏻‍🦰، 🧑🏿‍🦯، 👩🏻‍🤝‍👩🏼
    • ۱۲.۰: 🦩، 🦻🏿، 👩🏼‍🤝‍👩🏻

تأثیر پیکربندی خودکار EmojiCompat

سیستم با استفاده از کتابخانه‌ی راه‌اندازی، EmojiCompatInitializer و DefaultEmojiCompatConfig پیکربندی پیش‌فرض را اعمال می‌کند.

پس از اینکه اولین فعالیت در برنامه شما از سر گرفته شد، مقداردهنده اولیه، بارگذاری فونت ایموجی را زمان‌بندی می‌کند. این تأخیر کوتاه به برنامه شما اجازه می‌دهد محتوای اولیه خود را بدون هیچ تأخیر احتمالی ناشی از بارگذاری فونت در یک رشته پس‌زمینه نمایش دهد.

DefaultEmojiCompatConfig به دنبال یک ارائه‌دهنده فونت قابل دانلود نصب‌شده روی سیستم می‌گردد که رابط EmojiCompat را پیاده‌سازی می‌کند، مانند سرویس‌های Google Play. در دستگاه‌هایی که از سرویس‌های Google Play پشتیبانی می‌کنند، این سرویس فونت را با استفاده از سرویس‌های Google Play بارگذاری می‌کند.

مقداردهنده اولیه یک نخ پس‌زمینه برای بارگذاری فونت ایموجی ایجاد می‌کند و دانلود فونت می‌تواند تا 10 ثانیه طول بکشد و سپس زمان آن به پایان می‌رسد. پس از دانلود فونت، تقریباً 150 میلی‌ثانیه در نخ پس‌زمینه طول می‌کشد تا EmojiCompat مقداردهی اولیه شود.

حتی اگر EmojiCompatInitializer غیرفعال کرده‌اید، مقداردهی اولیه EmojiCompat را به تعویق بیندازید. اگر EmojiCompat را به صورت دستی پیکربندی می‌کنید ، پس از نمایش اولین صفحه برنامه، EmojiCompat.load() را فراخوانی کنید تا از تداخل پس‌زمینه با بارگذاری اولین صفحه جلوگیری شود.

پس از بارگذاری، EmojiCompat حدود ۳۰۰ کیلوبایت از رم را برای نگهداری فراداده‌های ایموجی استفاده می‌کند.