इमोजी के इस्तेमाल में तेज़ी से बढ़ोतरी हो रही है. इसलिए, यूनिकोड हर साल इमोजी के स्टैंडर्ड सेट को refreshed annually by रीफ़्रेश करता है. यह सेट, सभी तरह के ऐप्लिकेशन के लिए होता है.
अगर आपका ऐप्लिकेशन, इंटरनेट का कॉन्टेंट दिखाता है या उसमें टेक्स्ट डालने की सुविधा है, तो हमारा सुझाव है कि इमोजी के नए फ़ॉन्ट इस्तेमाल किए जाएं. ऐसा न करने पर, नए इमोजी टोफ़ू (☐) नाम के छोटे स्क्वेयर बॉक्स या गलत तरीके से रेंडर किए गए इमोजी के क्रम के तौर पर दिख सकते हैं.
Android के वर्शन 11 (एपीआई लेवल 30) और इससे पुराने वर्शन में, इमोजी के फ़ॉन्ट को अपडेट नहीं किया जा सकता. इसलिए, इन वर्शन पर दिखने वाले ऐप्लिकेशन को मैन्युअल तरीके से अपडेट करना होगा.
यहां आधुनिक इमोजी के उदाहरण दिए गए हैं.
| उदाहरण | वर्शन |
|---|---|
| 🇨🇶 | 16.0 (सितंबर 2024) |
| 🐦🔥 🧑🧑🧒🧒 👩🏽🦽➡️ 🇲🇶 | 15.1 (सितंबर 2023) |
| 🩷 🫸🏼 🐦⬛ | 15.0 (सितंबर 2022) |
| 🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (सितंबर 2021) |
| 😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (सितंबर 2020) |
| 🥲 🥷🏿 🐻❄️ | 13.0 (मार्च 2020) |
| 🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (अक्टूबर 2019) |
| 🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (फ़रवरी 2019) |
BOM मार्च 2023 (Compose UI 1.4) में, इमोजी के नए वर्शन के लिए सहायता उपलब्ध है. इसमें, Android के पुराने वर्शन के साथ बैकवर्ड कंपैटिबिलिटी भी शामिल है. यह सुविधा, एपीआई 21 तक के वर्शन के लिए उपलब्ध है.
इसके लिए, आपको अपने ऐप्लिकेशन में कोई बदलाव नहीं करना होगा— अगर Text और
TextField (Material 2 या Material 3) या BasicText और
BasicTextField का इस्तेमाल किया जाता है, तो आपको आधुनिक इमोजी के लिए सहायता तुरंत मिल जाती है.
अपने ऐप्लिकेशन में नए इमोजी की जांच करने का सबसे अच्छा तरीका है कि एपीआई 30 या इससे पुराने वर्शन वाले किसी असली डिवाइस का इस्तेमाल किया जाए.
अगर इमोजी के लिए, पसंद के मुताबिक बनाए गए किसी समाधान का इस्तेमाल किया जा रहा है या Compose में डिफ़ॉल्ट तौर पर सेट किए गए इमोजी रिज़ॉल्यूशन को किसी अन्य वजह से बंद करना है, तो
PlatformTextStyle(emojiSupportMatch) का इस्तेमाल किया जा सकता है:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
इंटरोऑपरेबिलिटी
अगर आपका ऐप्लिकेशन, एक ही Activity में Views और Compose, दोनों का इस्तेमाल करता है, तो पक्का करें कि इमोजी को सही तरीके से कॉन्फ़िगर करने के लिए, सही एपीआई का इस्तेमाल किया जा रहा हो. यहां दिए गए सेक्शन में, यह बताया गया है कि किस एपीआई का इस्तेमाल कब करना चाहिए.
ComponentActivity से एक्सटेंड करना
अगर आपकी Activity Compose ComponentActivity से एक्सटेंड होती है, न कि
AppCompatActivity से, तो AppCompat के बिना इमोजी की सुविधा इस्तेमाल करने के लिए दिए गए निर्देशों
का पालन करें.
अगर AppCompatActivity से एक्सटेंड नहीं किया जा रहा है, तो अपनी डिपेंडेंसी में Emoji2
library जोड़ें. साथ ही, अपने व्यू में EmojiTextView का इस्तेमाल करें
TextView विजेट के बजाय. इसके लिए, यहां दिया गया स्निपेट देखें:
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 } } } }
इसके बाद, अपनी एक्सएमएल फ़ाइल में:
<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 से एक्सटेंड किया जा रहा है, तो एक्सएमएल
से TextView को इन्फ़्लेट करें, ताकि इमोजी सही तरीके से रेंडर हो सकें.
यह तब लागू होता है, जब एक्सएमएल को इन्फ़्लेट किया जा रहा हो:
Activityमें,ComposeViewके बाहर. यहां दिए गए स्निपेट में,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 } ) } } } ) } }
ज़्यादा जानकारी के लिए, इंटरोऑपरेबिलिटी एपीआई से जुड़ा दस्तावेज़ देखें.
समस्या का हल
अगर आपको इमोजी के बजाय टोफ़ू (☐) दिख रहा है, तो सबसे पहले यह देखें कि समस्या आपके टेस्ट डिवाइस में है या नहीं. यहां कुछ मुख्य चीज़ें दी गई हैं जिनकी जांच की जा सकती है:
- ऐसा हो सकता है कि आपने हाल ही में फ़्लैश किए गए किसी डिवाइस या नए एम्युलेटर का इस्तेमाल किया हो. अगर मुमकिन हो, तो टेस्ट के लिए किसी ऐसे असली डिवाइस का इस्तेमाल करें जिसका इस्तेमाल अक्सर किया जाता है और जिसमें आपके Google खाते से साइन इन किया गया हो. ध्यान रखें कि एपीआई 30 या इससे कम होना चाहिए, ताकि यह पक्का किया जा सके कि इमोजी सही वर्शन में काम करते हैं.
- टेस्ट के लिए इस्तेमाल किए जा रहे फ़ोन में, डाउनलोड किए जा सकने वाले फ़ॉन्ट की सुविधा नहीं है.
- Google Play services का सही वर्शन देखें.
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर, लिंक का टेक्स्ट दिखता है
- विचार करने लायक अन्य बातें
- Compose में टेक्स्ट
- Scroll