इमोजी दिखाएं

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

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

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

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

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

समस्या का हल

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