ইমোজির স্ট্যান্ডার্ড সেট প্রতি বছর Unicode-এর মাধ্যমে রিফ্রেশ করা হয়, কারণ সব ধরনের অ্যাপের জন্য ইমোজির ব্যবহার দ্রুত বৃদ্ধি পাচ্ছে।
আপনার অ্যাপ যদি ইন্টারনেট কন্টেন্ট দেখায় বা টেক্সট ইনপুট প্রদান করে, তাহলে আমরা লেটেস্ট ইমোজি ফন্ট সাপোর্ট করার জন্য বিশেষভাবে সাজেস্ট করি। অন্যথায়, পরে ইমোজি ছোট বর্গাকার বক্স হিসেবে দেখানো হতে পারে যাকে টোফু (☐) বা অন্য ভুলভাবে রেন্ডার করা ইমোজি সিকোয়েন্স বলা হয়।
Android ভার্সন ১১ (API লেভেল ৩০) এবং তার আগের ভার্সনে ইমোজি ফন্ট আপডেট করা যায় না, তাই যেসব অ্যাপে এইসব ভার্সনে ইমোজি দেখানো হয় সেগুলি ম্যানুয়ালি আপডেট করতে হবে।
আধুনিক ইমোজির কিছু উদাহরণ নিচে দেওয়া হল।
| উদাহরণ | ভার্সন |
|---|---|
| 🇨🇶 | ১৬.০ (সেপ্টেম্বর ২০২৪) |
| 🐦🔥 🧑🧑🧒🧒 👩🏽🦽➡️ 🇲🇶 | ১৫.১ (সেপ্টেম্বর ২০২৩) |
| 🩷 🫸🏼 🐦⬛ | 15.0 (সেপ্টেম্বর ২০২২) |
| 🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (সেপ্টেম্বর ২০২১) |
| 😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | ১৩.১ (সেপ্টেম্বর ২০২০) |
| 🥲 🥷🏿 🐻❄️ | ১৩.০ (মার্চ ২০২০) |
| 🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | ১২.১ (অক্টোবর ২০১৯) |
| 🦩 🦻🏿 👩🏼🤝👩🏻 | ১২.০ (ফেব্রুয়ারি ২০১৯) |
BOM মার্চ ২০২৩ (Compose UI ১.৪) লেটেস্ট ইমোজি ভার্সন-এর জন্য সহায়তা প্রদান করে, যার মধ্যে API ২১ পর্যন্ত পুরনো Android ভার্সনের সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি অন্তর্ভুক্ত।
এই সহায়তার জন্য আপনার অ্যাপে কোনও পরিবর্তন করতে হবে না— আপনি Text এবং
TextField (Material 2 বা Material 3) অথবা BasicText এবং
BasicTextField ব্যবহার করলে, আপনি আধুনিক ইমোজি সহায়তা পাবেন।
আপনার অ্যাপে লেটেস্ট ইমোজি পরীক্ষা করার সবচেয়ে ভালো উপায় হল API 30 বা তার আগের ভার্সনে আসল ডিভাইস ব্যবহার করা।
আপনি যদি কাস্টম ইমোজি সমাধান ব্যবহার করেন বা অন্য কোনও কারণে Compose-এ ডিফল্ট ইমোজি
রেজোলিউশন বন্ধ করতে চান, তাহলে আপনি
PlatformTextStyle(emojiSupportMatch) ব্যবহার করতে পারেন:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
ইন্টারঅপারেবিলিটি
আপনার অ্যাপ একই Activity-এ ভিউ ও কম্পোজ, দুটিই ব্যবহার করলে,
ইমোজি সঠিকভাবে কনফিগার করার জন্য উপযুক্ত API ব্যবহার করছেন কিনা তা নিশ্চিত করুন। নিম্নলিখিত
বিভাগে প্রতিটি 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 কম্পোজেবল ব্যবহার করলে, Android-এর বিভিন্ন ভার্সন জুড়ে
ইমোজি সঠিকভাবে রেন্ডার হয়।
আপনি AppCompatActivity থেকে এক্সটেন্ড করলে, ইমোজি সঠিকভাবে রেন্ডার করতে
XML থেকে TextView ইনফ্লেট করুন।
আপনি 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 } } } } ) } }
ComposeView-এর মধ্যে AndroidView সহ টেক্সট ইনফ্লেট করতে, 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 } ) } } } ) } }
বিস্তারিত জানতে ইন্টারঅপারেবিলিটি API ডকুমেন্টেশন দেখুন।
সমস্যার সমাধান
ইমোজির পরিবর্তে টোফু (☐) দেখতে পেলে, প্রথমে চেক করে দেখুন যে সমস্যাটি আপনার নির্দিষ্ট টেস্ট ডিভাইসে হচ্ছে কিনা। আপনি কয়েকটি প্রধান জিনিস চেক করে দেখতে পারেন:
- আপনি হয়ত সম্প্রতি ফ্ল্যাশ করা ডিভাইস বা নতুন এমুলেটর ব্যবহার করছেন। সম্ভব হলে, আপনার Google অ্যাকাউন্টে সাইন-ইন করা আছে এমন অন্য কোনও আসল টেস্ট ডিভাইস ব্যবহার করে দেখুন যা আপনি প্রায়ই ব্যবহার করেন। মনে রাখবেন যে ইমোজি যাতে সঠিক ভার্সনে কাজ করে তা নিশ্চিত করতে API ৩০ বা তার কম হতে হবে।
- টেস্ট ফোনে ডাউনলোড করা যাবে এমন ফন্ট কাজ করে না।
- Google Play পরিষেবার সঠিক ভার্সন চেক করুন।
আপনার জন্য সাজেস্ট করা হয়েছে
- মনে রাখবেন: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট দেখানো হয়
- অন্যান্য বিষয়
- Compose-এ টেক্সট
- স্ক্রল করা