הקבוצה הרגילה של סמלי האמוג'י מתעדכן מדי שנה על ידי Unicode, ככל שהשימוש באמוג'י הולך וגדל במהירות לכל סוגי האפליקציות.
אם האפליקציה שלך מציגה תוכן באינטרנט או מספקת קלט טקסט, אנחנו מאוד ממליצים מומלץ לתמוך בגופנים העדכניים ביותר של האמוג'י. אחרת, יכול להיות שאמוג'י מאוחר יותר יהיה מוצגת כמו תיבה ריבועית קטנה בשם tofu (☐) או אחרת שעברה עיבוד שגוי רצפי אמוג'י.
אי אפשר לעדכן את גופן האמוג'י במכשירים עם Android בגרסה 11 (רמת API 30) ומטה צריך לעדכן באופן ידני אפליקציות שהאפליקציות האלה מציגות אותן בגרסאות האלה.
בהמשך מוצגות דוגמאות לאמוג'י מודרני.
דוגמאות | גרסה |
---|---|
🫠 🫱🏼 🫲🏿 🫰 | 14.0 (ספטמבר 2021) |
😶 🌫️ 🧔🏻 ♀️ 🧑🏿 ❤️ 🧑 | 13.1 (ספטמבר 2020) |
🥲 🥷🏿 🐻 ❄️ | 13.0 (מרץ 2020) |
🧑🏻 🦰 🧑🏿 🦯 👩🏻 🤝 👩🏼 | 12.1 (אוקטובר 2019) |
🦩 🦻🏿 👩🏻 🤝 👩🏻 | 12.0 (פברואר 2019) |
הספרייה androidx.emoji2:emoji2
מספקת תאימות לאחור פשוטה יותר
עם גרסאות קודמות של Android. הספרייה emoji2
תלויה
ספריית AppCompat
ולא מחייבת
הגדרות אישיות נוספות כדי לפעול.
תמיכה באמוג'י בניסוח האוטומטי
BOM מרץ 2023 (Compose UI גרסה 1.4) תומך בסמלי האמוג'י החדשים ביותר כולל תאימות לאחור לגרסאות ישנות יותר של Android, עד API 21. בדף הזה מוסבר איך להגדיר סמלי אמוג'י מודרניים במערכת התצוגה. צפייה מידע נוסף מופיע בדף אמוג'י בניסוח.
דרישות מוקדמות
כדי לוודא שהאפליקציה שלך מציגה כראוי סמלי אמוג'י חדשים, צריך להפעיל אותו במכשיר מערכת Android בגרסה 10 (API ברמה 29) ומטה. הדף הזה כולל סמלי אמוג'י מודרניים שלך יכולים להופיע לבדיקה.
שימוש ב-AppCompat לתמיכה באמוג'י העדכני ביותר
1.4 AppCompat
כולל תמיכה באמוג'י.
כדי להשתמש בסמל 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 Services.
אם באפליקציה נעשה שימוש ב-AppCompat אבל מוצג בה הערך של tofu (☐)
במקרים מסוימים, האפליקציה עשויה להציג טופו במקום את האמוג'י הנכון, גם אם
שמוסיפים את הספרייה AppCompat
. הנה הסברים אפשריים
ולבסוף על solutions.
האפליקציה מופעלת במכשיר שבהבה לאחרונה או באמולטור חדש
ניקוי נתוני האפליקציה של Google Play Services כדי לנקות שמירת גופנים במטמון במהלך ההפעלה. בדרך כלל הבעיה נפתרת לאחר מספר שעות.
כדי לנקות את נתוני האפליקציה:
פותחים את ההגדרות במכשיר Android.
מקישים על אפליקציות והתראות.
מקישים על הצגת כל האפליקציות או על פרטי אפליקציות.
גוללים בין האפליקציות ומקישים על Google Play Services.
מקישים על אחסון ו מטמון.
מקישים על ניקוי המטמון.
באפליקציה שלך לא נעשה שימוש בכיתה שקשורה לטקסט ב-AppCompat
זה יכול לקרות אם לא מרחיבים את AppCompatActivity
או אם יוצרים
בקוד, כמו TextView
. צריך לבדוק את הדברים הבאים:
- הפעילות נמשכת
AppCompatActivity
. - אם יוצרים את התצוגה בקוד, צריך להשתמש ב-
AppCompat
הנכון מחלקה משנית.
AppCompatActivity
מגדילה את AppCompatTextView
באופן אוטומטי במקום
TextView
כשמנפחים את ה-XML, כך שאין צורך לעדכן את ה-XML.
טלפון הבדיקה לא תומך בגופנים שניתן להוריד
צריך לוודא ש-DefaultEmojiCompatConfig.create
מחזירה הגדרה שאינה null.
אמולטור ברמת API קודמת לא שדרג את Google Play Services
כשמשתמשים באמולטור ברמת API קודמת, יכול להיות שתצטרכו לעדכן את
בחבילה של Google Play Services עבור 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
משתמש ב-EmojiSpan
כדי
לעבד תמונות נכונות. לכן היא צריכה להמיר כל
אובייקט CharSequence
לתוך
אובייקט Spanned
עם EmojiSpan
אובייקטים.
המחלקה אמוג'י מספקת את השיטה process()
כדי להמיר את CharSequences
ל-Spanned
מופעים. בשיטה הזו אפשר לקרוא לפונקציה process()
רקע ומטמון של התוצאות, מה שמשפר את ביצועי האפליקציה.
Kotlin
val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")
Java
CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");
שימוש ב-mojiCompat לעורכים של שיטות הקלט
הכיתה EmojiCompat
מאפשרת למקלדות לעבד את האמוג'י שנתמך על ידי האפליקציה
שהם מקיימים אינטראקציה איתם. עורכים של שיטות קלט
IME יכולים להשתמש
getEmojiMatch()
כדי לבדוק אם מופע של EmojiCompat
מסוגל להציג
אמוג'י. השיטה הזו אורכת CharSequence
של אמוג'י, ומחזירה את הערך true
אם EmojiCompat
יכול לזהות ולעבד את האמוג'י.
המקלדת יכולה גם לבדוק את הגרסה של EmojiCompat
שנתמכת באפליקציה
כדי לקבוע איזה אמוג'י יוצג בלוח הצבעים. כדי לבדוק את הגרסה, אם
זמינה, המקלדת יכולה לחפש את המקשים הבאים
EditorInfo.extras
Bundle:
EDITOR_INFO_METAVERSION_KEY
: מייצג את גרסת המטא-נתונים של האמוג'י שהאפליקציה משתמשת בהם. אם המקש הזה לא קיים, סימן שהאפליקציה לא משתמשת ב-EmojiCompat
.EDITOR_INFO_REPLACE_ALL_KEY
: אם המפתח קיים ומוגדר ל-true
, האפליקציה מגדירה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.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()
שיטות לרישום וביטול רישום של קריאות חוזרות (callback) לאתחול. האפליקציה שלך משתמשת בגורמים האלה
קריאות חוזרות (callback) צריכות להיות מוגדרות עד EmojiCompat
לפני שעיבוד האמוג'י יתחיל לפעול
שרשור ברקע או בתצוגה מותאמת אישית.
כדי להשתמש ב-methods האלה, יוצרים מופע של
EmojiCompat.InitCallback
בכיתה. קוראים ל-methods אלה ומעבירים (pass) במקרה
כיתה אחת (EmojiCompat.InitCallback
). כשהאתחול מוצלח, הפרמטר
הכיתה EmojiCompat
תקרא ל-
onInitialized()
. אם הספרייה לא תופעל, המחלקה EmojiCompat
תקרא ל-
onFailed()
.
כדי לבדוק את מצב האתחול בכל שלב, מפעילים את הפונקציה
getLoadState()
. השיטה הזו מחזירה אחד מהערכים הבאים:
LOAD_STATE_LOADING
LOAD_STATE_SUCCEEDED
,
או
LOAD_STATE_FAILED
.
תמיכה בגופנים בחבילה עם אמוג'י2
אפשר להשתמש בארטיפקט emoji2-bundled
כדי לצרף לאפליקציה גופן אמוג'י.
עם זאת, מכיוון שהגופן NotoColorEmoji
הוא מעל 10MB, אנחנו מאוד ממליצים
תמליץ על השימוש בגופנים שניתן להוריד, כשהדבר אפשרי.
פריט המידע שנוצר בתהליך הפיתוח (Artifact) של emoji2-bundled
מיועד לאפליקציות במכשירים שלא תומכים
גופנים שניתנים להורדה.
כדי להשתמש בארטיפקט emoji2-bundled
, צריך לבצע את הפעולות הבאות:
הכללת
emoji2-bundled
ו-emoji2
פריטי מידע שנוצרו בתהליך הפיתוח (Artifact):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: 🦩, 🦻🏿, 👩 🤝 👩🏻
ההשפעה של ההתאמה האוטומטית של האמוג'י
המערכת מחילה את הגדרות ברירת המחדל באמצעות ספריית ההפעלה,
EmojiCompatInitializer
, וגם
DefaultEmojiCompatConfig
.
אחרי שהפעילות הראשונה באפליקציה תתחדש, תוכנת ההפעלה תתזמן את האמוג'י. טעינת הגופן מתבצעת. העיכוב הקצר הזה מאפשר לאפליקציה להציג את התוכן הראשוני בלי זמן אחזור פוטנציאלי עקב טעינת גופן בשרשור ברקע.
האפליקציה DefaultEmojiCompatConfig
מחפשת גופן להורדה שמותקן על ידי המערכת
ספק שמטמיע את הממשק של EmojiCompat
, למשל Google Play
שירותים שונים. במכשירים שמופעלים על ידי Google Play Services, הגופן נטען באמצעות
Google Play Services.
מאתחל יוצר שרשור ברקע כדי לטעון את הגופן והגופן של האמוג'י
עשויות לחלוף עד 10 שניות לפני שיסתיים הזמן הקצוב לתפוגה. אחרי שהגופן
נדרשות כ-150 אלפיות השנייה לשרשור ברקע
צריך לאתחל את EmojiCompat
.
דחיית האתחול של EmojiCompat
, גם אם משביתים את ההגדרה
EmojiCompatInitializer
. אם מגדירים באופן ידני
EmojiCompat
, התקשרות אל EmojiCompat.load()
לאחר ההצגה
במסך הראשון של האפליקציה כדי להימנע מתחרות ברקע עם
טעינת המסך.
אחרי הטעינה, זיכרון ה-RAM של EmojiCompat
יהיה בנפח של כ-300KB כדי לשמור את האמוג'י
מטא-נתונים.