مجموعه استاندارد اموجی سالانه توسط Unicode بازآوری میشود، زیرا استفاده از اموجی بهسرعت برای انواع برنامهها درحال افزایش است.
اگر برنامهتان محتوای اینترنتی نمایش میدهد یا ورودی نوشتاری ارائه میدهد، اکیداً توصیه میکنیم از جدیدترین قلمهای اموجی پشتیبانی کنید. درغیراینصورت، اموجیهای جدیدتر ممکن است بهصورت یک چارگوش کوچک بهنام توفو (☐) یا دیگر توالیهای اموجی نادرست نمایش داده شوند.
Android نسخه ۱۱ (سطح میانای برنامهسازی کاربردی ۳۰) و پایینتر نمیتوانند قلم اموجی را بهروز کنند، بنابراین برنامههایی که آنها را در این نسخهها نمایش میدهند باید بهصورت دستی بهروز شوند.
در زیر نمونههایی از اموجیهای مدرن را میبینید.
| مثالها | نسخه |
|---|---|
| 🇨🇶 | ۱۶.۰ (سپتامبر ۲۰۲۴) |
| 🐦🔥 🧑🧑🧒🧒 👩🏽🦽➡️ 🇲🇶 | ۱۵.۱ (سپتامبر ۲۰۲۳) |
| 🩷 🫸🏼 🐦⬛ | ۱۵٫۰ (سپتامبر ۲۰۲۲) |
| 🫠 🫱🏼🫲🏿 🫰🏽 | ۱۴.۰ (سپتامبر ۲۰۲۱) |
| 😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | ۱۳.۱ (سپتامبر ۲۰۲۰) |
| 🥲 🥷🏿 🐻❄️ | ۱۳.۰ (مارس ۲۰۲۰) |
| 🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | ۱۲.۱ (اکتبر ۲۰۱۹) |
| 🦩 🦻🏿 👩🏼🤝👩🏻 | ۱۲٫۰ (فوریه ۲۰۱۹) |
BOM مارس ۲۰۲۳ (رابط کاربری Compose نسخه ۱.۴) از جدیدترین نسخه اموجی پشتیبانی میکند، ازجمله سازگاری با نسخههای قدیمیتر Android تا API 21.
این پشتیبانی نیازی به تغییر در برنامه شما ندارد— اگر از Text و
TextField (Material 2 یا Material 3) یا BasicText و
BasicTextField استفاده میکنید، پشتیبانی از اموجیهای مدرن را بهطور پیشفرض دریافت میکنید.
بهترین راه برای آزمایش کردن جدیدترین اموجیها در برنامهتان استفاده از دستگاه واقعی در API نسخه ۳۰ یا پایینتر است.
اگر از راهحل اموجی سفارشی استفاده میکنید، یا به هر دلیل دیگری نیاز دارید وضوح اموجی پیشفرض را در Compose غیرفعال کنید، میتوانید از PlatformTextStyle(emojiSupportMatch) استفاده کنید:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
همکنشپذیری
اگر برنامهتان هم از Views و هم از Compose در یک Activity استفاده میکند، مطمئن شوید که
از میاناهای برنامهسازی کاربردی مناسب برای پیکربندی صحیح اموجیها استفاده میکنید. بخشهای زیر توضیح میدهند که چه زمانی باید از هر API استفاده کرد.
درحال گسترش از ComponentActivity
اگر Activity شما بهجای AppCompatActivity از Compose ComponentActivity گسترش مییابد، دستورالعملهای پشتیبانی از اموجی بدون AppCompat را دنبال کنید.
چون AppCompatActivity را گسترش نمیدهید، کتابخانه Emoji2 را به وابستگیهایتان اضافه کنید و بهجای ابزاره TextView، از EmojiTextView در نماهایتان استفاده کنید، همانطور که در قطعه کد زیر نشان داده شده است:
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: EmojiTextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
سپس، در فایل XML:
<androidx.emoji2.widget.EmojiTextView android:id="@+id/emoji_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
درحال گسترش از AppCompatActivity
اگر Activity شما از AppCompatActivity گسترش مییابد، میتوانید از
ComposeView برای فراخوانی توابع ترکیبپذیر استفاده کنید. وقتی از Text composables استفاده میکنید، اموجیها در نسخههای Android بهدرستی پردازاند میشوند.
اگر از AppCompatActivity گسترش میدهید، TextView را از XML گسترش دهید
تا اموجیها بهدرستی ارائه شوند.
این مورد درصورتی اعمال میشود که XML را گسترش دهید:
- خارج از
ComposeView، درActivity. به کاربردAppCompatActivityوTextViewدر تکهکد زیر توجه کنید:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: TextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
- درون
ComposeView، ازطریق اتصال نما بااستفاده ازAndroidViewBinding، مانند قطعه کد زیر:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidViewBinding(ExampleViewBinding::inflate) { emojiTextView.text = EMOJI_TEXT } } } } ) } }
برای گسترش نوشتار با AndroidView در ComposeView، از
AppCompatTextView برای ارائه صحیح اموجیها استفاده کنید:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidView( factory = { context -> AppCompatTextView(context) }, update = { it.text = EMOJI_TEXT } ) } } } ) } }
برای جزئیات، به مستندات میاناهای برنامهسازی کاربردی همکنشپذیری مراجعه کنید.
عیبیابی
اگر بهجای اموجی، توفو (☐) میبینید، ابتدا بررسی کنید که آیا مشکل از دستگاه آزمایشی خاص شما است یا نه. چند مورد اصلی وجود دارد که میتوانید بررسی کنید:
- ممکن است از دستگاهی که اخیراً فلش شده یا شبیهساز جدیدی استفاده میکنید. درصورت امکان، دستگاه آزمایشی واقعی دیگری را که اغلب استفاده میکنید و به سیستم «حساب Google» شما وارد شده است امتحان کنید. بهخاطر داشته باشید که API باید ۳۰ یا کمتر باشد تا مطمئن شوید اموجیها در نسخههای صحیح کار میکنند.
- تلفن آزمایشی از قلمهای بارگیریشدنی پشتیبانی نمیکند.
- نسخه صحیح خدمات Google Play را بررسی کنید.
توصیهشده برای شما
- توجه: وقتی جاوا اسکریپت خاموش باشد، نوشتار پیوند نمایش داده میشود
- ملاحظات دیگر
- نوشتار در Compose
- پیمایش کردن