एंड्रॉइड ऐप में इमोजी कीबोर्ड इंटीग्रेशन
यह ट्यूटोरियल पॉपुलर SuperNova-Emoji लाइब्रेरी का उपयोग करके इमोजी कीबोर्ड जोड़ने का तरीका दिखाता है, साथ ही मॉडर्न विकल्प भी।
निर्भरताएं (build.gradle)
// Project-level build.gradle
repositories {
maven { url 'https://jitpack.io' }
}
// Module-level build.gradle
dependencies {
// SuperNova-Emoji (लिगेसी लेकिन काम करता है)
implementation 'com.github.hani-momanii:SuperNova-Emoji:1.1'
// या मॉडर्न विकल्प:
// implementation "com.google.android.material:material:1.10.0" // Material इमोजी सपोर्ट
// implementation "io.github.rockerhieu:emojicon:1.4.0" // Emojicon लाइब्रेरी
}
लेआउट (activity_main.xml)
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:emojicon="https://schemas.android.com/apk/res-auto"
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:padding="16dp">
<!-- इमोजी डिस्प्ले एरिया -->
<hani.momanii.supernova_emoji_library.Helper.EmojiconTextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginTop="26dp"
android:lineSpacingExtra="17sp"
android:text="नमस्ते इमोजी! 😀🎉"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColor="#000000"
emojicon:emojiconAlignment="bottom" />
<!-- इमोजी इनपुट एरिया -->
<hani.momanii.supernova_emoji_library.Helper.EmojiconEditText
android:id="@+id/emojicon_edit_text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/emojicon_edit_text"
android:imeOptions="actionSend"
android:inputType="text"
emojicon:emojiconSize="28sp" />
<hani.momanii.supernova_emoji_library.Helper.EmojiconEditText
android:id="@+id/emojicon_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@id/submit_btn"
android:layout_toRightOf="@id/emoji_btn"
android:imeOptions="actionSend"
android:inputType="text"
emojicon:emojiconSize="28sp" />
<ImageView
android:id="@+id/emoji_btn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:padding="4dp"
android:src="@drawable/ic_emoji" />
<ImageView
android:id="@+id/submit_btn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:padding="4dp"
android:src="@android:drawable/ic_menu_send" />
<CheckBox
android:id="@+id/use_system_default"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView"
android:layout_centerHorizontal="true"
android:text="सिस्टम डिफ़ॉल्ट इमोजी उपयोग करें?" />
</RelativeLayout>
MainActivity.java
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import hani.momanii.supernova_emoji_library.Actions.EmojIconActions;
import hani.momanii.supernova_emoji_library.Helper.EmojiconEditText;
import hani.momanii.supernova_emoji_library.Helper.EmojiconTextView;
public class MainActivity extends AppCompatActivity {
private EmojiconEditText emojiconEditText, emojiconEditText2;
private EmojiconTextView textView;
private ImageView emojiButton, submitButton;
private View rootView;
private EmojIconActions emojIcon;
private CheckBox useSystemDefault;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
setupEmojiKeyboard();
setupListeners();
}
private void initViews() {
rootView = findViewById(R.id.root_view);
emojiButton = findViewById(R.id.emoji_btn);
submitButton = findViewById(R.id.submit_btn);
useSystemDefault = findViewById(R.id.use_system_default);
emojiconEditText = findViewById(R.id.emojicon_edit_text);
emojiconEditText2 = findViewById(R.id.emojicon_edit_text2);
textView = findViewById(R.id.textView);
}
private void setupEmojiKeyboard() {
emojIcon = new EmojIconActions(this, rootView, emojiconEditText, emojiButton);
emojIcon.ShowEmojIcon();
// अतिरिक्त EditText के लिए इमोजी इनेबल करें
emojIcon.addEmojiconEditTextList(emojiconEditText2);
// कीबोर्ड लिस्टनर
emojIcon.setKeyboardListener(new EmojIconActions.KeyboardListener() {
@Override
public void onKeyboardOpen() {
Log.d("EmojiKeyboard", "खुला");
}
@Override
public void onKeyboardClose() {
Log.d("EmojiKeyboard", "बंद");
}
});
}
private void setupListeners() {
// सिस्टम डिफ़ॉल्ट इमोजी टॉगल
useSystemDefault.setOnCheckedChangeListener((buttonView, isChecked) -> {
emojIcon.setUseSystemEmoji(isChecked);
textView.setUseSystemDefault(isChecked);
});
// भेजें बटन
submitButton.setOnClickListener(v -> {
String newText = emojiconEditText.getText().toString();
textView.setText(newText);
});
}
}
मॉडर्न विकल्प: EmojiCompat (AndroidX)
लाइब्रेरी के बिना सिस्टम इमोजी सपोर्ट के लिए:
build.gradle
dependencies {
implementation "androidx.emoji2:emoji2:1.2.0"
implementation "androidx.emoji2:emoji2-bundled:1.2.0" // बंडल्ड फॉन्ट
}
Application क्लास में इनिशियलाइज़ेशन
import android.app.Application;
import androidx.emoji2.text.EmojiCompat;
import androidx.emoji2.bundled.BundledEmojiCompatConfig;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
EmojiCompat.init(new BundledEmojiCompatConfig(this));
}
}
XML में उपयोग (ऑटोमैटिक)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="नमस्ते 😀🎉🚀" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="इमोजी टाइप करें" />
तुलना
| समाधान | पक्ष | विपक्ष |
|---|---|---|
| SuperNova-Emoji | कस्टम इमोजी कीबोर्ड UI, कस्टम इमोजी सपोर्ट | मेंटेन नहीं, बड़ा APK साइज़ |
| EmojiCompat (AndroidX) | ऑफिशियल, लाइटवेट, ऑटो-अपडेट, कोई UI नहीं चाहिए | केवल रेंडरिंग, कीबोर्ड UI नहीं |
| Emojicon / EmojiOne | कस्टम इमोजी सेट्स, कीबोर्ड UI | थर्ड-पार्टी निर्भरता |
बेस्ट प्रैक्टिस
अधिकांश मॉडर्न ऐप्स के लिए: EmojiCompat (bundled) का उपयोग करें रेंडरिंग के लिए, और सिस्टम कीबोर्ड पर भरोसा करें इमोजी इनपुट के लिए। कस्टम कीबोर्ड UI केवल विशेष आवश्यकताओं के लिए बनाएं।