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