تهدف مكتبة دعم EmojiCompat
إلى ما يلي:
إبقاء أجهزة Android مُحدّثة بأحدث الرموز التعبيرية. يمنع هذا الإجراء تطبيقك
من عرض رموز الإيموجي المفقودة على شكل ☐،
يشير إلى أنّ جهازك لا يتضمّن خطًا لعرض النص. من
باستخدام مكتبة دعم EmojiCompat
،
لا يحتاج مستخدمو تطبيقك إلى انتظار تحديثات نظام التشغيل Android للحصول على آخر
رمز تعبيري.
يمكنك الاطّلاع على المراجع التالية ذات الصلة:
ما هي آلية عمل EmojiCompat؟
توفّر مكتبة دعم "EmojiCompat
"
إتاحة الرموز التعبيرية المتوافقة مع الأنظمة القديمة على الأجهزة التي تعمل بنظام التشغيل
الإصدار 4.4 من نظام التشغيل Android (المستوى 19 من واجهة برمجة التطبيقات) والإصدارات الأحدث يمكنك ضبط
EmojiCompat
إما مع تضمين أو
خطوط قابلة للتنزيل. لمزيد من المعلومات حول التهيئة، راجع
الأقسام التالية:
تحدِّد السمة EmojiCompat
الرموز التعبيرية لعنصر معيّن.
CharSequence
، يستبدلها بـ
EmojiSpans
، إذا لزم الأمر،
لعرض الرموز التعبيرية والرموز التعبيرية في النهاية. يوضح الشكل 2 العملية.
إعدادات الخطوط القابلة للتنزيل
تستخدم إعدادات الخطوط القابلة للتنزيل دعم الخطوط القابلة للتنزيل
الجديدة لتنزيل خط الرموز التعبيرية. كما يقوم أيضًا بتحديث
البيانات الوصفية للرموز التعبيرية التي EmojiCompat
الدعم إلى تحديث أحدث إصدارات يونيكود
المواصفات.
إضافة تبعية مكتبة الدعم
لاستخدام مكتبة دعم EmojiCompat
، يُرجى اتّباع الخطوات التالية:
يجب عليك تعديل تبعيات مسار الفئة لمشروع تطبيقك ضمن
لتطوير البرامج.
لإضافة مكتبة دعم إلى مشروع تطبيقك، اتّبِع الخطوات التالية:
- افتح ملف
build.gradle
لتطبيقك. - أضِف مكتبة الدعم إلى القسم
dependencies
.
Groovy
dependencies { ... implementation "androidx.emoji:emoji:28.0.0" }
Kotlin
dependencies { ... implementation("androidx.emoji:emoji:28.0.0") }
تهيئة الخط القابل للتنزيل الإعدادات
يجب إعداد EmojiCompat
من أجل
تحميل بيانات التعريف والخط الطباعي. وبما أنّ عملية الإعداد قد تستغرق بعض الوقت
يتم تشغيل عملية التهيئة على سلسلة محادثات في الخلفية.
لإعداد EmojiCompat
باستخدام السمة
تهيئة خط قابلة للتنزيل، عليك تنفيذ الخطوات التالية:
- إنشاء مثيل لـ
FontRequest
فئة وتوفير مرجع موفر الخط، وحزمة موفر الخط، استعلام الخط، وقائمة بمجموعات تجزئات الشهادة. لمزيد من المعلومات، معلومات حولFontRequest
، يُرجى الرجوع إلى استخدام الخطوط القابلة للتنزيل آليًا في قسم الخطوط القابلة للتنزيل التوثيق. - إنشاء مثيل
FontRequestEmojiCompatConfig
مع تقديم أمثلة عنContext
FontRequest
- إعداد
EmojiCompat
من خلال استدعاءinit()
وتمرير مثيلFontRequestEmojiCompatConfig
- استخدام تطبيقات "
EmojiCompat
" المصغّرة في التنسيق ملفات XML. في حال استخدامAppCompat
، يُرجى الرجوع إلى استخدام تطبيقات EmojiCompat المصغّرة مع AppCompat .
Kotlin
class MyApplication : Application() { override fun onCreate() { super.onCreate() val fontRequest = FontRequest( "com.example.fontprovider", "com.example", "emoji compat Font Query", CERTIFICATES ) val config = FontRequestEmojiCompatConfig(this, fontRequest) EmojiCompat.init(config) } }
Java
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); FontRequest fontRequest = new FontRequest( "com.example.fontprovider", "com.example", "emoji compat Font Query", CERTIFICATES); EmojiCompat.Config config = new FontRequestEmojiCompatConfig(this, fontRequest); EmojiCompat.init(config); } }
<android.support.text.emoji.widget.EmojiTextView android:layout_width="wrap_content" android:layout_height="wrap_content"/> <android.support.text.emoji.widget.EmojiEditText android:layout_width="wrap_content" android:layout_height="wrap_content"/> <android.support.text.emoji.widget.EmojiButton android:layout_width="wrap_content" android:layout_height="wrap_content"/>
لمزيد من المعلومات حول كيفية ضبط
EmojiCompat
بالخط القابل للتنزيل
الإعداد، انتقِل إلى نموذج تطبيق متوافق مع الرموز التعبيرية
Java
| Kotlin.
مكونات المكتبة
- التطبيقات المصغّرة:
EmojiEditText
،EmojiTextView
,EmojiButton
- عمليات تنفيذ الأداة التلقائية التي سيتم استخدامها
EmojiCompat
باستخدامTextView
وEditText
وButton
EmojiCompat
- العرض العام الرئيسي لمكتبة الدعم. ينفذ جميع الاتصالات والإحداثيات الخارجية مع الأجزاء الأخرى من النظام.
EmojiCompat.Config
- يضبط هذا الإعداد المثيل الفردي الذي سيتم إنشاؤه.
EmojiSpan
- فئة فرعية
ReplacementSpan
تحل محل (التسلسلات) وعرض الحرف الرسومي. - الخط "
EmojiCompat
" - يستخدم
EmojiCompat
خطًا لعرضه. رمز تعبيري. هذا الخط هو نسخة معدلة من خط رموز Android التعبيرية. يتم تعديل الخط على النحو التالي:- لتوفير التوافق مع الأنظمة القديمة لعرض الرموز التعبيرية، يتم تمثيل الحروف بنقطة رمز يونيكود واحدة في تبدأ منطقة الاستخدام الخاص الإضافية في يونيكود بـ U+F0001.
-
يتم إدراج البيانات الوصفية الإضافية للرموز التعبيرية بتنسيق ثنائي في الخط
يتم تحليله في وقت التشغيل من خلال
EmojiCompat
يتم تضمين البيانات في جدولmeta
للخط، باستخدام العلامة الخاصة Emji.
خيارات الإعداد
يمكنك استخدام المثيل EmojiCompat
تعديل سلوك EmojiCompat
يمكنك استخدام
الطرق التالية من الفئة الأساسية لضبط الإعدادات:
setReplaceAll()
: تحدِّد هذه السياسة ما إذا كان يجب علىEmojiCompat
. يستبدل كل الرموز التعبيرية التي يعثر عليهاEmojiSpans
بشكل افتراضي، يبذلEmojiCompat
قصارى جهده معرفة ما إذا كان بإمكان النظام عرض رموز تعبيرية وعدم استبدالها رمز تعبيري. عند الضبط علىtrue
، يستبدلEmojiCompat
كل الرموز التعبيرية التي يعثر عليها. معEmojiSpans
.setEmojiSpanIndicatorEnabled()
: تشير إلى ما إذا كان تم استبدال رمز تعبيري بواسطةEmojiCompat
بـ CANNOT TRANSLATEEmojiSpan
عند الضبط علىtrue
، يرسمEmojiCompat
خلفية لـEmojiSpan
تُستخدم هذه الطريقة في الأساس لأغراض تصحيح الأخطاء.setEmojiSpanIndicatorColor()
: لضبط اللون للإشارة إلىEmojiSpan
. القيمة التلقائية هيGREEN
.registerInitCallback
: إبلاغ التطبيق بحالة إعدادEmojiCompat
.
Kotlin
val config = FontRequestEmojiCompatConfig(...) .setReplaceAll(true) .setEmojiSpanIndicatorEnabled(true) .setEmojiSpanIndicatorColor(Color.GREEN) .registerInitCallback(object: EmojiCompat.InitCallback() { ... })
Java
EmojiCompat.Config config = new FontRequestEmojiCompatConfig(...) .setReplaceAll(true) .setEmojiSpanIndicatorEnabled(true) .setEmojiSpanIndicatorColor(Color.GREEN) .registerInitCallback(new InitCallback() {...})
إضافة أدوات معالجة ملفات الإعداد
EmojiCompat
و
صفان (EmojiCompat
)
تقديم
registerInitCallback()
أو
unregisterInitCallback()
لتسجيل استدعاء إعداد. لاستخدام هذه الطرق، أنشئ
مثال على
صف واحد (EmojiCompat.InitCallback
). اتصل
هذه الطرق وتمرير مثيل
صف واحد (EmojiCompat.InitCallback
). عندما
إعداد دعم EmojiCompat
المكتبة ناجحة، حيث إن EmojiCompat
الفئة على
onInitialized()
. إذا كانت المكتبة
تعذّرت تهيئة EmojiCompat
،
الفئة على
onFailed()
.
للتحقق من حالة التهيئة في أي وقت، اطلب
getLoadState()
. تعرض إحدى القيم التالية:
LOAD_STATE_LOADING
,
LOAD_STATE_SUCCEEDED
,
أو LOAD_STATE_FAILED
.
استخدام EmojiCompat مع تطبيقات AppCompat المصغّرة
في حال استخدام AppCompat widgets
، يعني ذلك
يمكنه استخدام EmojiCompat
تطبيقات مصغّرة تزيد
ابتداءً من AppCompat widgets
- أضِف مكتبة الدعم إلى قسم الموارد التابعة.
Groovy
dependencies { ... implementation "androidx.emoji:emoji-bundled:$version" }
Kotlin
dependencies { implementation("androidx.emoji:emoji-appcompat:$version") }
Groovy
dependencies { implementation "androidx.emoji:emoji-appcompat:$version" }
- استخدام "
EmojiCompat
"AppCompat Widget
تطبيقات مصغّرة في التنسيق ملفات XML.
<android.support.text.emoji.widget.EmojiAppCompatTextView android:layout_width="wrap_content" android:layout_height="wrap_content"/> <android.support.text.emoji.widget.EmojiAppCompatEditText android:layout_width="wrap_content" android:layout_height="wrap_content"/> <android.support.text.emoji.widget.EmojiAppCompatButton android:layout_width="wrap_content" android:layout_height="wrap_content"/>
إعدادات الخطوط المجمّعة
مكتبة دعم EmojiCompat
هي أيضًا
متوفرة في إصدار خط مجمع. تتضمن هذه الحزمة الخط مع
بيانات التعريف المضمّنة. تتضمن الحزمة أيضًا
BundledEmojiCompatConfig
تستخدم AssetManager
لتحميل البيانات الوصفية
والخطوط.
ملاحظة: حجم الخط متعدد ميغابايت.
إضافة تبعية مكتبة الدعم
لاستخدام مكتبة دعم EmojiCompat
مع ضبط الخط المجمّع، عليك تعديل
ضمن بيئة التطوير الخاصة بك.
لإضافة مكتبة دعم إلى مشروع تطبيقك، اتّبِع الخطوات التالية:
- افتح ملف
build.gradle
لتطبيقك. - أضِف مكتبة الدعم إلى القسم
dependencies
.
Groovy
dependencies { ... implementation "androidx.emoji:emoji:28.0.0" }
Kotlin
dependencies { ... implementation("androidx.emoji:emoji:28.0.0") }
استخدام خطوط مجمّعة لضبط إعدادات EmojiCompat
لاستخدام الخطوط المجمّعة لضبط
EmojiCompat
، عليك تنفيذ الخطوات التالية:
- استخدام "
BundledEmojiCompatConfig
" لإنشاء مثيل منEmojiCompat
وقدّم مثيلContext
. - عليك استدعاء
init()
طريقة الإعدادEmojiCompat
وتمرير مثيلBundledEmojiCompatConfig
Kotlin
class MyApplication : Application() { override fun onCreate() { super.onCreate() val config = BundledEmojiCompatConfig(this) EmojiCompat.init(config) } }
Java
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); EmojiCompat.Config config = new BundledEmojiCompatConfig(this); EmojiCompat.init(config); ... } }
استخدام EmojiCompat بدون التطبيقات المصغّرة
استخدامان (EmojiCompat
)
EmojiSpan
لعرض الصور الصحيحة.
لذلك، يجب تحويل أي CharSequence
إلى
Spanned
حالة مع
EmojiSpans
تشير رسالة الأشكال البيانية
توفر الفئة EmojiCompat
طريقةً
تحويل CharSequences
إلى
Spanned
حالة مع
EmojiSpans
باستخدام هذه الطريقة،
يمكنك معالجة الحالات التي تمت معالجتها وتخزينها مؤقتًا بدلاً من السلسلة الأولية،
مما يحسن أداء تطبيقك.
Kotlin
val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")
Java
CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");
استخدام EmojiCompat مع أدوات IME
باستخدام مكتبة دعم EmojiCompat
،
يمكن للوحات المفاتيح عرض الرموز التعبيرية المتوافقة مع التطبيق الذي تتوافق معه
للتفاعل معه. يمكن أن تستخدم أدوات IME
hasEmojiGlyph()
طريقة التحقّق ممّا إذا كان EmojiCompat
متاحًا
لعرض رمز تعبيري تستغرق هذه الطريقة CharSequence
من
رمز تعبيري ويتم عرض true
إذا
يمكن لـ EmojiCompat
اكتشاف وعرض
رمز تعبيري.
يمكن للوحة المفاتيح أيضًا التحقق من إصدار
يدعم EmojiCompat
من مكتبات التطبيق
لتحديد الرموز التعبيرية التي سيتم عرضها في لوحة الألوان. للتحقق من
إذا كان متاحًا، تحتاج لوحة المفاتيح إلى التحقق مما إذا كان ما يلي
المفاتيح الموجودة في
EditorInfo.extras
حزمة:
EDITOR_INFO_METAVERSION_KEY
EDITOR_INFO_REPLACE_ALL_KEY
إذا كان المفتاح موجودًا في الحزمة، فإن القيمة تمثل
من البيانات الوصفية للرموز التعبيرية التي يستخدمها التطبيق. وإذا لم يكن هذا المفتاح
متوفّر، لا يستخدم التطبيق EmojiCompat
.
إذا كان المفتاح متوفّرًا وتم ضبطه على true
، يعني ذلك أنّ
دعا التطبيق
SetReplaceAll()
. لمزيد من المعلومات عن
إعداد EmojiCompat
،
يُرجى الرجوع إلى خيارات الإعداد
.
بعد استلام المفاتيح في
مجموعة واحدة (EditorInfo.extras
)،
يمكن للوحة المفاتيح استخدام
hasEmojiGlyph()
حيث تكون metadataVersion
هي قيمة
EDITOR_INFO_METAVERSION_KEY
,
للتحقّق مما إذا كان بإمكان التطبيق عرض رمز تعبيري محدَّد
استخدام ميزة EmojiCompat مع التطبيقات المصغّرة المخصّصة
يمكنك في أي وقت استخدام process()
.
لمعالجة CharSequence
مسبقًا في تطبيقك وإضافة
على أي تطبيق مصغّر يمكنه عرض مثيلات Spanned
حيث
على سبيل المثال، TextView
. بالإضافة إلى ذلك،
يوفر EmojiCompat
التطبيق المصغّر التالي
لمساعدتك في تحسين التطبيقات المصغّرة المخصّصة من خلال إتاحة الرموز التعبيرية
الحد الأدنى من الجهد.
- نموذج TextView
- نموذج EditText
Kotlin
class MyTextView(context: Context) : AppCompatTextView(context) { private val emojiTextViewHelper: EmojiTextViewHelper by lazy(LazyThreadSafetyMode.NONE) { EmojiTextViewHelper(this).apply { updateTransformationMethod() } } override fun setFilters(filters: Array<InputFilter>) { super.setFilters(emojiTextViewHelper.getFilters(filters)) } override fun setAllCaps(allCaps: Boolean) { super.setAllCaps(allCaps) emojiTextViewHelper.setAllCaps(allCaps) } }
Java
public class MyTextView extends AppCompatTextView { ... public MyTextView(Context context) { super(context); init(); } ... private void init() { getEmojiTextViewHelper().updateTransformationMethod(); } @Override public void setFilters(InputFilter[] filters) { super.setFilters(getEmojiTextViewHelper().getFilters(filters)); } @Override public void setAllCaps(boolean allCaps) { super.setAllCaps(allCaps); getEmojiTextViewHelper().setAllCaps(allCaps); } private EmojiTextViewHelper getEmojiTextViewHelper() { ... } }
Kotlin
class MyEditText(context: Context) : AppCompatEditText(context) { private val emojiEditTextHelper: EmojiEditTextHelper by lazy(LazyThreadSafetyMode.NONE) { EmojiEditTextHelper(this).also { super.setKeyListener(it.getKeyListener(keyListener)) } } override fun setKeyListener(input: KeyListener?) { input?.also { super.setKeyListener(emojiEditTextHelper.getKeyListener(it)) } } override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection { val inputConnection: InputConnection = super.onCreateInputConnection(outAttrs) return emojiEditTextHelper.onCreateInputConnection( inputConnection, outAttrs ) as InputConnection } }
Java
public class MyEditText extends AppCompatEditText { ... public MyEditText(Context context) { super(context); init(); } ... private void init() { super.setKeyListener(getEmojiEditTextHelper().getKeyListener(getKeyListener())); } @Override public void setKeyListener(android.text.method.KeyListener keyListener) { super.setKeyListener(getEmojiEditTextHelper().getKeyListener(keyListener)); } @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection inputConnection = super.onCreateInputConnection(outAttrs); return getEmojiEditTextHelper().onCreateInputConnection(inputConnection, outAttrs); } private EmojiEditTextHelper getEmojiEditTextHelper() { ... } }
الأسئلة الشائعة
- كيف يمكنني بدء تنزيل الخط؟
- كم تستغرق عملية الإعداد؟
- ما هو حجم الذاكرة التي تستخدمها ميزة EmojiCompat في المكتبة؟
- هل يمكنني استخدام EmojiCompat مع عنصر TextView مخصّص؟
- ماذا يحدث في حال إضافة تطبيقات مصغّرة بتنسيق XML على الأجهزة التي أن يعمل بنظام التشغيل Android 4.4 (المستوى 19 لواجهة برمجة التطبيقات) أو بإصدار أقدم؟
يتم تنزيل خطوط الرموز التعبيرية عند الطلب الأول، إذا لم تكن متوفّرة. على الجهاز. تكون جدولة التنزيل واضحة للتطبيق.
بعد تنزيل الخط، يستغرق 150 مللي ثانية تقريبًا
لإعداد EmojiCompat
.
في الوقت الحالي، يتم تحميل بنية البيانات للعثور على الرمز التعبيري في قسم صغيرة وتستخدم حوالي 200 كيلوبايت.
نعم. توفّر ميزة EmojiCompat فئات مساعدة لأدوات مخصّصة. من المهم أيضًا
من الممكن معالجة سلسلة معينة مسبقًا وتحويلها إلى
Spanned
مزيد من المعلومات عن تطبيق "مساعد Google" المصغّر
يمكنك الرجوع إلى
استخدام ميزة EmojiCompat مع التطبيقات المصغّرة المخصَّصة
.
يمكنك تضمين EmojiCompat
.
مكتبة الدعم أو تطبيقاتها المصغّرة في التطبيقات التي تتوافق مع الأجهزة
يعمل بنظام التشغيل Android 4.4 (المستوى 19 لواجهة برمجة التطبيقات) أو أقل. ومع ذلك، إذا كان الجهاز يعمل
على إصدار Android أقدم من المستوى 19 لواجهة برمجة التطبيقات
"EmojiCompat
" وتطبيقاته المصغّرة في
"لا عملية" الولاية. هذا يعني أنّ
تعمل ميزة EmojiTextView
بالضبط.
مثل TextView
العادي.
مثال واحد (EmojiCompat
) فورًا
في
LOAD_STATE_SUCCEEDED
الحالة عند استدعاء
init()
.
مصادر إضافية
لمزيد من المعلومات عن استخدام
EmojiCompat
المكتبة، وشاهد EmojiCompat.