ইমোজির স্ট্যান্ডার্ড সেট ইউনিকোড দ্বারা প্রতি বছর রিফ্রেশ করা হয়, কারণ ইমোজির ব্যবহার সব ধরনের অ্যাপের জন্য দ্রুত বাড়ছে।
যদি আপনার অ্যাপ ইন্টারনেট সামগ্রী প্রদর্শন করে বা পাঠ্য ইনপুট প্রদান করে, আমরা দৃঢ়ভাবে সর্বশেষ ইমোজি ফন্ট সমর্থন করার পরামর্শ দিই। অন্যথায়, পরবর্তীতে ইমোজি একটি ছোট বর্গাকার বক্স হিসেবে প্রদর্শিত হতে পারে যাকে বলা হয় tofu (☐) বা অন্য ভুলভাবে রেন্ডার করা ইমোজি সিকোয়েন্স।
অ্যান্ড্রয়েড সংস্করণ 11 (এপিআই স্তর 30) এবং নিম্নতর ইমোজি ফন্ট আপডেট করতে পারে না, তাই সেই সংস্করণগুলিতে প্রদর্শিত অ্যাপগুলিকে ম্যানুয়ালি আপডেট করতে হবে।
নিম্নে আধুনিক ইমোজির উদাহরণ দেওয়া হল।
উদাহরণ | সংস্করণ |
---|---|
🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (সেপ্টেম্বর 2021) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (সেপ্টেম্বর 2020) |
🥲 🥷🏿 🐻❄️ | 13.0 (মার্চ 2020) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (অক্টোবর 2019) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (ফেব্রুয়ারি 2019) |
BOM মার্চ 2023 ( কম্পোজ UI 1.4 ) সর্বশেষ ইমোজি সংস্করণের জন্য সমর্থন নিয়ে আসে, যার মধ্যে পুরানো অ্যান্ড্রয়েড সংস্করণগুলির সাথে API 21-এ নিচের দিকের সামঞ্জস্য রয়েছে।
এই সমর্থনের জন্য আপনার অ্যাপে কোনো পরিবর্তনের প্রয়োজন নেই — আপনি যদি Text
এবং TextField
(মেটেরিয়াল 2 বা মেটেরিয়াল 3) বা BasicText
এবং BasicTextField
ব্যবহার করেন, তাহলে আপনি বাক্সের বাইরে আধুনিক ইমোজি সমর্থন পাবেন।
আপনার অ্যাপে সর্বশেষ ইমোজি পরীক্ষা করার সর্বোত্তম উপায় হল API 30 বা তার নিচের একটি বাস্তব ডিভাইস ব্যবহার করা।
আপনি যদি একটি কাস্টম ইমোজি সলিউশন ব্যবহার করেন বা অন্য কোনো কারণে কম্পোজে ডিফল্ট ইমোজি রেজোলিউশন অক্ষম করতে চান, তাহলে আপনি 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
ব্যবহার করতে পারেন। আপনি যখন টেক্সট কম্পোজেবল ব্যবহার করেন তখন ইমোজিগুলি 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 } ) } } } ) } }
বিস্তারিত জানার জন্য Interoperability APIs ডকুমেন্টেশন দেখুন।
সমস্যা সমাধান
আপনি যদি ইমোজির পরিবর্তে tofu (☐) দেখতে পান, তাহলে প্রথমে পরীক্ষা করে দেখুন সমস্যাটি আপনার নির্দিষ্ট পরীক্ষার ডিভাইস কিনা। আপনি চেক করতে পারেন এমন কয়েকটি প্রধান জিনিস রয়েছে:
- আপনি হয়ত একটি সম্প্রতি ফ্ল্যাশ করা ডিভাইস বা একটি নতুন এমুলেটর ব্যবহার করছেন৷ যদি সম্ভব হয়, আপনি প্রায়শই ব্যবহার করেন এমন অন্য একটি আসল পরীক্ষা ডিভাইস ব্যবহার করে দেখুন যা আপনার Google অ্যাকাউন্টে সাইন ইন করা থাকে। মনে রাখবেন যে সঠিক সংস্করণে ইমোজি কাজ করছে তা নিশ্চিত করতে API 30 বা তার কম হওয়া উচিত।
- টেস্ট ফোন ডাউনলোডযোগ্য ফন্ট সমর্থন করে না ।
- সঠিক Google Play পরিষেবার সংস্করণ পরীক্ষা করুন।
আপনার জন্য প্রস্তাবিত
- দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট প্রদর্শিত হয়
- অন্যান্য বিবেচনা
- রচনায় পাঠ্য
- স্ক্রল করুন