تتم إعادة تحميل المجموعة العادية من الرموز التعبيرية سنويًا بواسطة استخدام يونيكود مع تزايد استخدام الرموز التعبيرية بسرعة لجميع أنواع التطبيقات.
وإذا كان تطبيقك يعرض محتوى على الإنترنت أو يقدّم إدخالاً نصيًا، سنشدّد على أهمية أنصحك باعتماد أحدث خطوط الرموز التعبيرية وبخلاف ذلك، قد تكون الرموز التعبيرية اللاحقة يظهر كمربّع مربّع صغير باسم tofu (☐) أو أي شيء آخر معروض بشكل غير صحيح تسلسلات الرموز التعبيرية.
لا يمكن لإصدار Android 11 (المستوى 30 من واجهة برمجة التطبيقات) والإصدارات الأقدم تعديل خط الرموز التعبيرية، لذلك يجب تحديث التطبيقات التي تعرضها على هذه الإصدارات يدويًا.
في ما يلي أمثلة على الرموز التعبيرية الحديثة.
أمثلة | الإصدار |
---|---|
🫠 🫱🏼 🫲🏿 🫰🏽 | 14.0 (أيلول (سبتمبر) 2021) |
🌫️ 🧔 ♀️ 🧑🏿 ❤️ 🧑🏾 | 13.1 (أيلول (سبتمبر) 2020) |
🥲 🥷🏿 🐻 ☀️ | 13.0 (آذار (مارس) 2020) |
🧑 🦰 🧑🏿 🦯 👩 🤝 👩🏼 | 12.1 (تشرين الأول/أكتوبر 2019) |
🦩 🦻🏿 👩🏼 🤝 👩 | 12.0 (شباط (فبراير) 2019) |
توفّر مكتبة androidx.emoji2:emoji2
توافقًا بسيطًا مع الأنظمة القديمة.
ذات الإصدارات الأقدم من نظام التشغيل Android تعتمد مكتبة emoji2
على
مكتبة AppCompat
ولا تتطلب
تهيئة إضافية للعمل.
إتاحة الرموز التعبيرية في ميزة Compose
BOM آذار (مارس) 2023 (الإصدار 1.4 من واجهة Compose API) الذي يتيح استخدام أحدث الرموز التعبيرية بما في ذلك التوافق مع الإصدارات القديمة من Android وصولاً إلى واجهة برمجة التطبيقات 21- تتناول هذه الصفحة كيفية ضبط الرموز التعبيرية الحديثة في نظام العرض. عرض لمزيد من المعلومات، يمكنك الانتقال إلى صفحة الرموز التعبيرية في ميزة "إنشاء".
المتطلّبات الأساسية
للتأكّد من أنّ تطبيقك يعرض الرموز التعبيرية الجديدة بشكل صحيح، عليك تشغيله على جهاز. أن يعمل بالإصدار 10 من نظام التشغيل Android (المستوى 29 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم تتضمن هذه الصفحة رموزًا تعبيرية حديثة لك عرضها للاختبار.
استخدام AppCompat لإتاحة أحدث الرموز التعبيرية
AppCompat
1.4 يتضمن الدعم للرموز التعبيرية.
لاستخدام AppCompat
لإتاحة الرموز التعبيرية، عليك اتّباع الخطوات التالية:
تأكّد من أنّ الوحدة تعتمد على إصدار مكتبة
AppCompat
. 1.4.0-alpha01 أو أعلى.build.gradle // Ensure version is 1.4.0-alpha01 or higher. implementation "androidx.appcompat:appcompat.$appcompatVersion"
تأكد من أن جميع الأنشطة التي تعرض نصًا توسّع
AppCompatActivity
الصف.Kotlin
MyActivity.kt class MyActivity: AppCompatActivity { ... }
Java
MyActivity.java class MyActivity extends AppCompatActivity { ... }
اختبار عملية الدمج من خلال إطلاق تطبيقك على جهاز يعمل بنظام التشغيل Android 10 أو أقل وعرض سلسلة الاختبار التالية. تأكد من أن جميع الأحرف العرض بشكل صحيح.
- 14.0: 🫠، 🫱🏼 🫲🏿، 🫰🏽
- 13.1: 📈 🌫️، 🧔 ♀️، 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲، 🥷🏿، 🐻 ويتميز
- 12.1: 🧑 🦰، 🧑🏿 🦯، 👩 🤝 👩🏼
- 12.0: 🦩، 🦻🏿، 👩🏼 🤝 👩
يعرض تطبيقك تلقائيًا الرموز التعبيرية المتوافقة مع الأنظمة القديمة على جميع الأجهزة التي
توفير موفّر خطوط قابل للتنزيل ومتوافق مع emoji2
، مثل الأجهزة
بواسطة خدمات Google Play.
إذا كان تطبيقك يستخدم AppCompat ولكنه يعرض التوفو (☐)
في بعض الحالات، قد يعرض تطبيقك التوفو بدلاً من الرموز التعبيرية المناسبة، حتى إذا
فأنت تضيف مكتبة AppCompat
. في ما يلي التفسيرات المحتملة
الرائدة.
إذا كنت تشغِّل التطبيق على جهاز تم تثبيت تثبيت أحدث إصدار منه مؤخرًا أو محاكي جديد
يمكنك محو بيانات "خدمات Google Play" للتطبيق من أجل محو أي ذاكرة تخزين مؤقت للخطوط قد تحدث أثناء بدء التشغيل. ويؤدي هذا عادةً إلى حل المشكلة بعد بضع ساعات.
لمحو بيانات التطبيق، يمكنك اتّباع الخطوات التالية:
افتح الإعدادات على جهازك الذي يعمل بنظام التشغيل Android.
انقر على التطبيقات والإشعارات.
انقر على عرض كل التطبيقات أو معلومات التطبيق.
تصفَّح التطبيقات وانقر على خدمات Google Play.
انقر على مساحة التخزين وذاكرة التخزين المؤقت.
انقر على محو ذاكرة التخزين المؤقت.
لا يستخدم تطبيقك صفًا مرتبطًا بالنص في AppCompat
قد يحدث ذلك في حال عدم تمديد السمة AppCompatActivity
أو في حال إنشاء مثيل
العرض في الرمز البرمجي، مثل TextView
. تحقَّق ممّا يلي:
- يمتد النشاط لمدة
AppCompatActivity
. - إذا كنت تنشئ الملف الشخصي في الرمز، استخدِم
AppCompat
الصحيح. فئة فرعية.
يؤدي AppCompatActivity
إلى تضخيم AppCompatTextView
تلقائيًا بدلاً من
TextView
عند تضخيم XML، وبالتالي لن تحتاج إلى تعديل ملف XML.
لا يتيح الهاتف الاختباري استخدام الخطوط القابلة للتنزيل
تأكَّد من أنّ DefaultEmojiCompatConfig.create
يعرض إعدادات غير فارغة.
لم يعمد محاكي على مستوى واجهة برمجة تطبيقات سابق إلى ترقية "خدمات Google Play"
عند استخدام محاكي على مستوى واجهة برمجة تطبيقات سابق، قد تحتاج إلى تحديث
خدمات Google Play المجمّعة في emoji2
للعثور على موفِّر الخط. للقيام بذلك،
سجِّل الدخول إلى "متجر Google Play" على المحاكي.
للتأكّد من تثبيت إصدار متوافق، اتّبِع الخطوات التالية:
شغِّل الأمر التالي:
adb shell dumpsys package com.google.android.gms | grep version
تأكَّد من أنّ قيمة
versionCode
أعلى من211200000
.
دعم الرموز التعبيرية بدون استخدام AppCompat
إذا تعذّر على تطبيقك تضمين AppCompat
، يمكنه استخدام emoji2
مباشرةً. هذا النمط
تتطلب المزيد من العمل، لذلك لا تستخدم هذه الطريقة إلا إذا كان تطبيقك لا يمكنه استخدام AppCompat
.
لإتاحة الرموز التعبيرية بدون مكتبة "AppCompat
"، عليك اتّباع الخطوات التالية:
في ملف
build.gradle
لتطبيقك، أضِفemoji2
وemoji2-views
.build.gradle def emojiVersion = "1.0.0-alpha03" implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-views:$emojiVersion"
توفّر الوحدة
emoji2-views
فئات فرعية منTextView
وButton
وEditText
التي يتم تنفيذهاEmojiCompat
عدم الاستخدام في تطبيق يتضمّنAppCompat
، لأنّه يتم تنفيذه حاليًاEmojiCompat
في ملف XML والرموز البرمجية، أينما كنت تستخدم
TextView
أوEditText
أوButton
—استخدامEmojiTextView
,EmojiEditText
، أوEmojiButton
بدلاً من ذلك.activity_main.xml <androidx.emoji2.widget.EmojiTextView ... /> <androidx.emoji2.widget.EmojiEditText ... /> <androidx.emoji2.widget.EmojiButton ... />
عند تضمين وحدة
emoji2
، يستخدم النظام الوحدة التلقائية القابلة للتنزيل. موفر الخطوط إلى تحميل خط الرموز التعبيرية تلقائيًا بعد بدء تشغيل التطبيق بفترة قصيرة. لا يلزم إجراء مزيد من التهيئة.لاختبار عملية الدمج، افتح التطبيق على جهاز يعمل بنظام التشغيل Android 11 أو أقل وعرض سلاسل الاختبار التالية. تأكد من أن جميع الأحرف العرض بشكل صحيح.
- 14.0: 🫠، 🫱🏼 🫲🏿، 🫰🏽
- 13.1: 📈 🌫️، 🧔 ♀️، 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲، 🥷🏿، 🐻 ويتميز
- 12.1: 🧑 🦰، 🧑🏿 🦯، 👩 🤝 👩🏼
- 12.0: 🦩، 🦻🏿، 👩🏼 🤝 👩
استخدام ميزة EmojiCompat بدون التطبيقات المصغّرة
يستخدم EmojiCompat
EmojiSpan
من أجل
لعرض الصور الصحيحة. لذلك، ينبغي لها تحويل أي
كائن CharSequence
في
كائن Spanned
يحتوي على EmojiSpan
من العناصر.
توفّر فئة EmojiCompat الطريقة process()
لتحويل CharSequences
إلى Spanned
حالة. باستخدام هذه الطريقة، يمكنك استدعاء process()
في
الخلفية والتخزين المؤقت للنتائج، مما يحسن أداء تطبيقك.
Kotlin
val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")
Java
CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");
استخدام EmojiCompat لتحرير أسلوب الإدخال
تتيح الفئة EmojiCompat
للوحات المفاتيح عرض الرموز التعبيرية المتوافقة مع التطبيق.
الذين يتفاعلون معها. محرِّرو أسلوب الإدخال
(أداة IME) استخدام
getEmojiMatch()
للتحقق مما إذا كان مثيل EmojiCompat
قادرًا على عرض
رمز تعبيري. تستغرق هذه الطريقة CharSequence
للرمز التعبيري وتعرض true
إذا كان بإمكان EmojiCompat
اكتشاف الرمز التعبيري وعرضه.
يمكن للوحة المفاتيح أيضًا التحقّق من إصدار EmojiCompat
الذي يتوافق مع التطبيق.
لتحديد الرمز التعبيري الذي سيتم عرضه في لوحة الألوان. للتحقق من الإصدار، إذا
متاحة، يمكن للوحة المفاتيح البحث عن المفاتيح التالية في
EditorInfo.extras
حزمة:
EDITOR_INFO_METAVERSION_KEY
: نسخة البيانات الوصفية للرموز التعبيرية التي يستخدمها التطبيق. إذا كان هذا المفتاح غير موجود، فهذا يعني أن التطبيق لا يستخدمEmojiCompat
.EDITOR_INFO_REPLACE_ALL_KEY
: إذا كان المفتاح متوفرًا وتم ضبطه علىtrue
، سيضبط التطبيقEmojiCompat
لاستبدال جميع الرموز التعبيرية، حتى إذا كانت متوفّرة في النظام.
مزيد من المعلومات حول كيفية تهيئة مثيل EmojiCompat
استخدام الرموز التعبيرية في طرق العرض المخصّصة
إذا كان لتطبيقك طرق عرض مخصّصة
أي فئة فرعية مباشرة أو غير مباشرة من TextView
—مثل Button
،
Switch
أو EditText
- ويمكن أن تعرض هذه الملفات الشخصية محتوى من إنشاء المستخدم
للمحتوى، فيجب على كل منها تنفيذ
EmojiCompat
وتختلف هذه العملية استنادًا إلى ما إذا كان تطبيقك يستخدم مكتبة "AppCompat
".
إضافة طرق عرض مخصّصة للتطبيقات باستخدام AppCompat
إذا كان تطبيقك يستخدم "AppCompat
"، يمكنك تمديد تنفيذ "AppCompat
" بدلاً من
على التنفيذ الأساسي في النظام الأساسي. استخدِم الجدول التالي كدليل لكيفية
توسيع نطاق المشاهدات في AppCompat
:
بدلاً من تمديد... | تمديد |
---|---|
TextView
|
AppCompatTextView
|
EditText
|
AppCompatEditText
|
ToggleButton
|
AppCompatToggleButton
|
Switch
|
SwitchCompat
|
Button
|
AppCompatButton
|
CheckedTextView
|
AppCompatCheckedTextView
|
RadioButton
|
AppCompatRadioButton
|
CheckBox
|
AppCompatCheckBox
|
AutoCompleteTextView
|
AppCompatAutoCompleteTextView
|
MultiAutoCompleteTextView
|
AppCompatMultiAutoCompleteTextView
|
إضافة طرق عرض مخصّصة للتطبيقات التي لا تتوفّر لها منصّة AppCompat
إذا كان تطبيقك لا يستخدم AppCompat
، يمكنك استخدام أدوات مساعدة دمج العرض في
وحدة emoji2-views-helper
المصممة للاستخدام في طرق العرض المخصصة. هذه
هي الأدوات المساعدة التي تستخدمها مكتبة AppCompat
لإتاحة الرموز التعبيرية.
أكمِل الخطوات التالية لإتاحة طرق العرض المخصّصة للتطبيقات التي لا تستخدمها.
AppCompat
إضافة مكتبة
emoji2-views-helper
:implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
اتّبِع التعليمات لتضمين
EmojiTextViewHelper
أوEmojiEditTextHelper
في طرق العرض المخصّصة لتطبيقكاختبار عملية الدمج من خلال إطلاق تطبيقك على جهاز يعمل بنظام التشغيل Android 10 أو أقل وعرض سلسلة الاختبار التالية. تأكد من أن جميع الأحرف العرض بشكل صحيح.
- 14.0: 🫠، 🫱🏼 🫲🏿، 🫰🏽
- 13.1: 📈 🌫️، 🧔 ♀️، 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲، 🥷🏿، 🐻 ويتميز
- 12.1: 🧑 🦰، 🧑🏿 🦯، 👩 🤝 👩🏼
- 12.0: 🦩، 🦻🏿، 👩🏼 🤝 👩
ميزات اختيارية للتعامل مع الرموز التعبيرية 2
بعد تضمين مكتبة emoji2
في تطبيقك، يمكنك إضافة العنصر الاختياري.
الميزات الموضحة في هذا القسم.
إعداد رمز تعبيري 2 لاستخدام خط مختلف أو موفّر خطوط قابل للتنزيل
لإعداد emoji2
من أجل استخدام خط مختلف أو موفِّر خط قابل للتنزيل، اتّبِع الخطوات التالية:
ما يلي:
إيقاف
EmojiCompatInitializer
من خلال إضافة ما يلي إلى ملف البيان:<provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer" tools:node="remove" /> </provider>
نفّذ أيًا مما يلي:
يمكنك استخدام الإعدادات التلقائية من خلال استدعاء
DefaultEmojiCompatConfiguration.create(context)
يمكنك إنشاء الإعدادات الخاصة بك لتحميل الخطوط من مصدر آخر باستخدام.
EmojiCompat.Config
يوفّر هذا الصف عدة خيارات لتعديلEmojiCompat
. المستخدم، كما هو موضح في القسم التالي.
تعديل سلوك EmojiCompat
يمكنك استخدام مثيل من EmojiCompat.Config
لتعديل EmojiCompat
.
السلوك.
يعد خيار التهيئة الأكثر أهمية
setMetadataLoadStrategy()
،
التي تتحكم في وقت تحميل EmojiCompat
للخط. سيبدأ تحميل الخط بمجرد
يتم استدعاء EmojiCompat.load()
، ويؤدي ذلك إلى تشغيل أي عمليات تنزيل ضرورية. تشير رسالة الأشكال البيانية
ينشئ نظام التشغيل سلسلة محادثات لتنزيل الخطوط ما لم يوفّر تطبيقك سلسلة محادثات.
يتيح لك LOAD_STRATEGY_MANUAL
التحكّم في وقت استدعاء الدالة EmojiCompat.load()
،
LOAD_STRATEGY_DEFAULT
إلى بدء التحميل بشكل متزامن في المكالمة
EmojiCompat.init()
تستخدم معظم التطبيقات "LOAD_STRATEGY_MANUAL
" لتتمكّن من التحكّم في سلسلة المحادثات والتوقيت
تحميل الخط يجب تأجيل تطبيقك إلى ما بعد ظهور الشاشة الأولى
تجنب إدخال وقت استجابة بدء التشغيل. يتابع EmojiCompatInitializer
هذا.
التطبيق وتأجيل تحميل خط الرموز التعبيرية حتى ما بعد استئناف الشاشة الأولى.
استخدم الطرق التالية من الفئة الأساسية لتعيين أوجه أخرى التكوين:
setReplaceAll()
: يحدّد ما إذا كانEmojiCompat
سيستبدل كل الرموز التعبيرية التي يعثر عليها بمثيلات منEmojiSpan
. بشكل تلقائي، عندما يستنتجEmojiCompat
أن النظام يمكنه لعرض رمز تعبيري، لا يحل محل ذلك الرمز التعبيري. عند الضبط علىtrue
، تستبدلEmojiCompat
كل الرموز التعبيرية بكائناتEmojiSpan
.setEmojiSpanIndicatorEnabled()
: يشير إلى ما إذا كانEmojiCompat
سيستبدل رمزًا تعبيريًا برمزEmojiSpan
الخاص بك. عند الضبط علىtrue
، يرسمEmojiCompat
خلفية لـEmojiSpan
تُستخدم هذه الطريقة بشكل أساسي لأغراض تصحيح الأخطاء.setEmojiSpanIndicatorColor
: لضبط اللون للإشارة إلىEmojiSpan
. القيمة الافتراضية هيGREEN
registerInitCallback()
: تُعلِم هذه السياسة التطبيق بحالة إعدادEmojiCompat
.
إضافة أدوات معالجة الأحداث للإعداد
يوفّر الصفان EmojiCompat
وEmojiCompat.Config
registerInitCallback()
أو
unregisterInitCallback()
لتسجيل وإلغاء تسجيل استدعاءات الإعداد. يستخدم تطبيقك هذه
طلبات معاودة الاتصال للانتظار حتى يتم إعداد EmojiCompat
قبل معالجة الرموز التعبيرية على
سلسلة محادثات في الخلفية أو بطريقة عرض مخصّصة
لاستخدام هذه الطرق، قم بإنشاء مثيل
EmojiCompat.InitCallback
الصف. استدعِ هذه الطرق ومرر في مثيل
صف واحد (EmojiCompat.InitCallback
). عندما يتم الإعداد بنجاح،
يستدعي صف واحد (EmojiCompat
)
onInitialized()
. إذا تعذّر إعداد المكتبة، تطلب الفئة EmojiCompat
onFailed()
.
للتحقق من حالة التهيئة في أي وقت، اطلب
getLoadState()
. تُرجع هذه الطريقة إحدى القيم التالية:
LOAD_STATE_LOADING
،
LOAD_STATE_SUCCEEDED
,
أو
LOAD_STATE_FAILED
التوافق مع الخطوط المضمَّنة في الرموز التعبيرية 2
يمكنك استخدام عنصر "emoji2-bundled
" لتجميع خط للرموز التعبيرية في تطبيقك.
ومع ذلك، ونظرًا لأن حجم الخط NotoColorEmoji
يتجاوز 10 ميغا بايت، فإننا نشدّد على
ننصح بأن يستخدم تطبيقك الخطوط القابلة للتنزيل إن أمكن. تشير رسالة الأشكال البيانية
عناصر "emoji2-bundled
" مخصّصة للتطبيقات على الأجهزة غير المتوافقة.
خطوط قابلة للتنزيل.
لاستخدام عنصر "emoji2-bundled
"، اتّبِع الخطوات التالية:
تضمين
emoji2-bundled
وemoji2
عنصر:implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
اضبط
emoji2
لاستخدام الإعدادات المجمّعة:Kotlin
EmojiCompat.init(BundledEmojiCompatConfig(context))
Java
EmojiCompat.init(new BundledEmojiCompatConfig(context));
اختبر الدمج باتباع الخطوات السابقة لتضمين
emojicompat
مع استخدامAppCompat
أو بدونها. تأكد من أن سلسلة الاختبار بشكل صحيح.- 14.0: 🫠، 🫱🏼 🫲🏿، 🫰🏽
- 13.1: 📈 🌫️، 🧔 ♀️، 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲، 🥷🏿، 🐻 ويتميز
- 12.1: 🧑 🦰، 🧑🏿 🦯، 👩 🤝 👩🏼
- 12.0: 🦩، 🦻🏿، 👩🏼 🤝 👩
تأثير ضبط EmojiCompat التلقائي
يطبق النظام التهيئة الافتراضية باستخدام مكتبة بدء التشغيل،
EmojiCompatInitializer
،
DefaultEmojiCompatConfig
بعد استئناف النشاط الأول في تطبيقك، يجدول أداة الإعداد الرموز التعبيرية. جارٍ تحميل الخط وتتيح هذه المهلة القصيرة لتطبيقك عرض المحتوى الأولي بدون أي وقت استجابة محتمل بسبب تحميل الخط في سلسلة محادثات في الخلفية.
يبحث DefaultEmojiCompatConfig
عن خط قابل للتنزيل مثبَّته النظام.
مقدِّم خدمة ينفِّذ واجهة EmojiCompat
، مثل Google Play
على الأجهزة المتوافقة مع "خدمات Google Play"، يؤدي هذا إلى تحميل الخط باستخدام
خدمات Google Play
ينشئ أداة الإعداد سلسلة محادثات في الخلفية لتحميل خط الرموز التعبيرية والخط.
يمكن أن يستغرق التنزيل مدة تصل إلى 10 ثوانٍ قبل انتهاء المهلة. بعد أن يصبح الخط
يستغرق تنزيله 150 مللي ثانية تقريبًا على سلسلة محادثات في الخلفية
إعداد EmojiCompat
.
تأجيل إعداد EmojiCompat
، حتى في حال إيقاف الميزة
EmojiCompatInitializer
إذا قمت بتهيئة
EmojiCompat
، يمكنك الاتصال بالرقم EmojiCompat.load()
بعد عرضه.
الشاشة الأولى من تطبيقك لتجنب التعارض في الخلفية مع
تحميل الشاشة.
بعد التحميل، يستخدم EmojiCompat
حوالي 300 كيلوبايت من ذاكرة الوصول العشوائي للاحتفاظ بالرمز التعبيري
بيانات التعريف.