इमोजी दिखाएं

इमोजी के स्टैंडर्ड सेट को हर साल यूनिकोड अपडेट करता है. ऐसा इसलिए, क्योंकि सभी तरह के ऐप्लिकेशन के लिए इमोजी का इस्तेमाल तेज़ी से बढ़ रहा है.

अगर आपका ऐप्लिकेशन इंटरनेट कॉन्टेंट दिखाता है या टेक्स्ट इनपुट करने की सुविधा देता है, तो हमारा सुझाव है कि आप इमोजी के नए फ़ॉन्ट इस्तेमाल करें. ऐसा न करने पर, बाद में इमोजी को तोफ़ू (☐) कहे जाने वाले छोटे स्क्वेयर बॉक्स के तौर पर दिखाया जा सकता है. इसके अलावा, इमोजी के क्रम को गलत तरीके से रेंडर किया जा सकता है.

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)

मार्च 2023 के बीओएम (Compose UI 1.4) में, इमोजी के नए वर्शन के लिए सहायता उपलब्ध है. इसमें Android के पुराने वर्शन के साथ काम करने की सुविधा भी शामिल है. यह सुविधा, एपीआई 21 तक के वर्शन के साथ काम करती है.

इसके लिए, आपको अपने ऐप्लिकेशन में कोई बदलाव करने की ज़रूरत नहीं है. अगर Text और TextField (Material 2 या Material 3) या BasicText और BasicTextField का इस्तेमाल किया जाता है, तो आपको नए इमोजी इस्तेमाल करने की सुविधा तुरंत मिल जाती है.

अपने ऐप्लिकेशन में नए इमोजी को टेस्ट करने का सबसे अच्छा तरीका यह है कि आप एपीआई 30 या इससे पहले के वर्शन वाले किसी डिवाइस का इस्तेमाल करें.

अगर आपको कस्टम इमोजी का इस्तेमाल करना है या किसी अन्य वजह से, कंपोज़ करते समय डिफ़ॉल्ट इमोजी रिज़ॉल्यूशन की सुविधा बंद करनी है, तो PlatformTextStyle(emojiSupportMatch) का इस्तेमाल करें:

Text(
    text = "Hello $EMOJI_TEXT",
    style = TextStyle(
        platformStyle = PlatformTextStyle(
            emojiSupportMatch = EmojiSupportMatch.None
        )/* ... */
    )
)

इंटरऑपरेबिलिटी

अगर आपका ऐप्लिकेशन एक ही Activity में Views और Compose, दोनों का इस्तेमाल करता है, तो पक्का करें कि इमोजी को सही तरीके से कॉन्फ़िगर करने के लिए, सही एपीआई का इस्तेमाल किया जा रहा हो. यहां दिए गए सेक्शन में, यह बताया गया है कि किस एपीआई का इस्तेमाल कब किया जाना चाहिए.

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
            }
        }
    }
}

इसके बाद, अपनी एक्सएमएल फ़ाइल में:

<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 से एक्सटेंड करना है, तो इमोजी को सही तरीके से रेंडर करने के लिए, एक्सएमएल से TextView को बड़ा करें.

यह तब लागू होता है, जब एक्सएमएल फ़ाइल में ये बदलाव किए जाते हैं:

  • 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
            }
        }
    }
}

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 }
                        )
                    }
                }
            }
        )
    }
}

ज़्यादा जानकारी के लिए, इंटरऑपरेबिलिटी एपीआई से जुड़ा दस्तावेज़ देखें.

समस्या का हल

अगर आपको इमोजी की जगह तोफ़ू (☐) दिख रहा है, तो पहले यह देखें कि समस्या आपके टेस्ट डिवाइस में तो नहीं है. यहां कुछ मुख्य चीज़ें दी गई हैं जिनकी जांच की जा सकती है: