इमोजी दिखाएं

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

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

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 यूज़र इंटरफ़ेस (यूआई) 1.4) में, इमोजी के नए वर्शन के साथ काम करने की सुविधा जोड़ी गई है. इसमें एपीआई 21 तक के पुराने Android वर्शन के साथ पुराने सिस्टम के साथ काम करने की सुविधा भी शामिल है.

इस सुविधा के लिए, आपको अपने ऐप्लिकेशन में कोई बदलाव करने की ज़रूरत नहीं है. अगर 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 में व्यू और कंपोज़, दोनों का इस्तेमाल करता है, तो पक्का करें कि इमोजी को सही तरीके से कॉन्फ़िगर करने के लिए, सही एपीआई का इस्तेमाल किया जा रहा हो. यहां दिए गए सेक्शन में बताया गया है कि किस एपीआई का इस्तेमाल कब करना चाहिए.

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

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

समस्या का हल

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