המטרה של ספריית התמיכה של EmojiCompat
היא
עדכן מכשירי Android כדי להשתמש בסמלי האמוג'י האחרונים. הוא מונע מהאפליקציה
מהצגת תווי אמוג'י חסרים בפורמט ☐,
מציין שהמכשיר לא כולל גופן להצגת הטקסט. על ידי
באמצעות ספריית התמיכה של EmojiCompat
,
משתמשי האפליקציה לא צריכים לחכות לעדכונים של Android OS כדי לקבל את הגרסה האחרונה.
אמוג'י.
![מכשירים שמוצגים בהם סמלי אמוג'י](https://developer.android.google.cn/static/guide/topics/ui/images/look-and-feel/emoji-compat/emoji-comparison.png?authuser=9&hl=he)
כדאי לעיין במקורות המידע שקשורים לנושא:
איך האמוג'י עובד?
ספריית התמיכה של EmojiCompat
כוללת
כדי להטמיע תמיכה באמוג'י בתאימות לאחור במכשירים פועלים
Android בגרסה 4.4 (רמת API 19) ואילך. אפשר להגדיר
EmojiCompat
במסגרת חבילה או
גופנים שניתנים להורדה. למידע נוסף על הגדרות אישיות, אפשר לעיין
לסעיפים הבאים:
EmojiCompat
מזהה אמוג'י מסוים
CharSequence
, מחליף אותם ב-
EmojiSpans
, אם נדרש, וגם
בסוף מעבדת את הגליפים של האמוג'י. איור 2 מדגים את התהליך.
![תהליך התאמת האמוג'י](https://developer.android.google.cn/static/guide/topics/ui/images/look-and-feel/emoji-compat/architecture.png?authuser=9&hl=he)
הגדרת גופנים שניתנים להורדה
ההגדרה של הגופנים שניתנת להורדה משתמשת בתמיכה בגופנים שניתנים להורדה
לספרייה להורדת גופן אמוג'י. היא גם מעדכנת את
מטא-נתונים של אמוג'י שEmojiCompat
בספריית התמיכה צריך להתעדכן בגרסאות האחרונות של ה-Unicode
למפרט.
הוספת תלות של ספריות תמיכה
כדי להשתמש בספריית התמיכה של EmojiCompat
:
צריך לשנות את יחסי התלות של נתיב הכיתות של פרויקט האפליקציה
סביבת פיתוח.
כדי להוסיף ספריית תמיכה לפרויקט האפליקציה:
- פותחים את הקובץ
build.gradle
של האפליקציה. - צריך להוסיף את ספריית התמיכה לקטע
dependencies
.
מגניב
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
, לעיין שימוש בווידג'טים של אמוג'י תואם עם 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
| קוטלין.
רכיבי הספרייה
![רכיבי ספרייה בתהליך התאימות של אמוג'י](https://developer.android.google.cn/static/guide/topics/ui/images/look-and-feel/emoji-compat/basic-components.png?authuser=9&hl=he)
- ווידג'טים:
EmojiEditText
,EmojiTextView
,EmojiButton
- הטמעות ברירת מחדל של ווידג'טים לשימוש
EmojiCompat
עםTextView
,EditText
וגםButton
EmojiCompat
- הפלטפורמה הציבורית הראשית של ספריית התמיכה. הוא מבצע את כל שיחות חיצוניות וקואורדינטות עם חלקים אחרים של המערכת.
EmojiCompat.Config
- מגדירים את מכונת ה-Singleton שתיווצר.
EmojiSpan
- תת-מחלקה
ReplacementSpan
שמחליף את (רצף) ומעבד את הגליף. - גופן
EmojiCompat
EmojiCompat
משתמשת בגופן כדי להציג אמוג'י. גופן זה הוא גרסה שעברה שינוי של גופן אמוג'י ב-Android. הגופן ישתנה באופן הבא:- כדי לשמור על תאימות לאחור לרנדר של האמוג'י, כל סמלי האמוג'י צריכים מיוצגים באמצעות נקודת קוד אחת של Unicode האזור המשלים של Unicode לשימוש פרטי ב-Unicode מתחיל ב-U+F0001.
-
מטא-נתונים נוספים של אמוג'י מוכנסים בפורמט בינארי לגופן.
מנותח בזמן הריצה לפי
EmojiCompat
הנתונים מוטמעים בטבלת הגופןmeta
, באמצעות התג הפרטי Emji.
אפשרויות תצורה
אפשר להשתמש במכונה EmojiCompat
כדי
לשנות את ההתנהגות של EmojiCompat
. אפשר להשתמש
את ה-methods הבאות ממחלקת הבסיס כדי להגדיר את התצורה:
setReplaceAll()
: המדיניות קובעת אםEmojiCompat
צריך להחליף את כל האמוג'י שהוא מוצא באמוג'יEmojiSpans
. כברירת מחדל,EmojiCompat
עושה כמיטב יכולתו להבין אם המערכת יכולה לעבד סמלי אמוג'י ולא תחליף אותם אמוג'י. כשהערך הואtrue
,EmojiCompat
מחליף את כל סמלי האמוג'י שהוא מוצא עםEmojiSpans
.setEmojiSpanIndicatorEnabled()
: מציין אם האמוג'י הוחלף על ידיEmojiCompat
ב- הEmojiSpan
. כשהערך הוא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()
שיטות לרישום קריאה חוזרת (callback) לאתחול. כדי להשתמש בשיטות האלה, צריך ליצור
מופע של
כיתה אחת (EmojiCompat.InitCallback
). שיחת טלפון
האלה ומעבירים את המופע
כיתה אחת (EmojiCompat.InitCallback
). כאשר
אתחול התמיכה ב-EmojiCompat
הצלחת, EmojiCompat
הכיתה קוראת ל
onInitialized()
. אם הספרייה
לא ניתן לאתחל, את EmojiCompat
הכיתה קוראת ל
onFailed()
.
כדי לבדוק את מצב האתחול בכל שלב, מפעילים את הפונקציה
getLoadState()
. היא מחזירה את אחד מהערכים הבאים:
LOAD_STATE_LOADING
,
LOAD_STATE_SUCCEEDED
,
או LOAD_STATE_FAILED
.
שימוש ב-mojiCompat עם ווידג'טים של AppCompat
אם משתמשים ב-AppCompat widgets
,
יכול להשתמש בווידג'טים של EmojiCompat
שמרחיבים
מ-AppCompat widgets
.
- מוסיפים את ספריית התמיכה לקטע של יחסי התלות.
מגניב
dependencies { ... implementation "androidx.emoji:emoji-bundled:$version" }
Kotlin
dependencies { implementation("androidx.emoji:emoji-appcompat:$version") }
מגניב
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
בהגדרת הגופן בחבילה, חייבים לשנות את הפרויקט של האפליקציה
ותלויות ב-classpath בסביבת הפיתוח שלכם.
כדי להוסיף ספריית תמיכה לפרויקט האפליקציה:
- פותחים את הקובץ
build.gradle
של האפליקציה. - צריך להוסיף את ספריית התמיכה לקטע
dependencies
.
מגניב
dependencies { ... implementation "androidx.emoji:emoji:28.0.0" }
Kotlin
dependencies { ... implementation("androidx.emoji:emoji:28.0.0") }
שימוש בגופנים בחבילה כדי להגדיר אתmojiCompat
כדי להשתמש בגופנים בחבילה לצורך הגדרה
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
שימושים
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");
שימוש בהתאמת אמוג'י ל-IME
באמצעות ספריית התמיכה של EmojiCompat
,
מקלדות יכולות לעבד את האמוג'י שנתמך על ידי האפליקציה שבה
קיום אינטראקציה. עורכי שיטות קלט יכולים להשתמש
hasEmojiGlyph()
כדי לבדוק אם EmojiCompat
יכול
של עיבוד אמוג'י. השיטה הזו לוקחת CharSequence
אמוג'י ומחזיר את הערך true
אם
EmojiCompat
יכול לזהות ולעבד את
אמוג'י.
המקלדת יכולה גם לבדוק את הגרסה של
יש תמיכה בספריית EmojiCompat
שהאפליקציה תומכת בה
כדי לקבוע איזה אמוג'י יוצג בלוח הצבעים. כדי לבדוק את
אם זמינה, המקלדת צריכה לבדוק אם
המפתחות שנמצאים
EditorInfo.extras
Bundle:
EDITOR_INFO_METAVERSION_KEY
EDITOR_INFO_REPLACE_ALL_KEY
אם המפתח קיים בחבילה, הערך מייצג את
המטא-נתונים של האמוג'י שהאפליקציה משתמשת בהם. אם המפתח הזה לא
קיים, האפליקציה לא משתמשת ב-EmojiCompat
.
אם המפתח קיים ומוגדר לערך true
, המשמעות היא
האפליקציה קראה
SetReplaceAll()
. מידע נוסף על
הגדרה של EmojiCompat
,
מידע נוסף זמין באפשרויות הגדרה.
.
אחרי קבלת המפתחות
חבילה אחת (EditorInfo.extras
),
המקלדת יכולה להשתמש
hasEmojiGlyph()
כאשר metadataVersion
הוא הערך של
EDITOR_INFO_METAVERSION_KEY
,
כדי לבדוק אם האפליקציה יכולה לעבד אמוג'י מסוים.
שימוש באמוג'י שתואם לווידג'טים מותאמים אישית
תמיד אפשר להשתמש בprocess()
לעיבוד מראש של CharSequence
באפליקציה ולהוסיף
לכל ווידג'ט שיכול לעבד Spanned
מופעים. עבור
לדוגמה, TextView
. In addition,
EmojiCompat
מספק את הווידג'ט הבא
כיתות Assistant שמאפשרות לך להעשיר את הווידג'טים המותאמים אישית עם תמיכה באמוג'י
במאמץ מינימלי.
- 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() { ... } }
שאלות נפוצות
- איך מתחילים את הורדת הגופן?
- כמה זמן נדרש לאתחול?
- בכמה זיכרון נעשה שימוש בספריית התמיכה של אמוג'י?
- האם אפשר להשתמש ב-mojiCompat ביצירת TextView בהתאמה אישית?
- מה קורה אם מוסיפים ווידג'טים לפריסות XML במכשירים פועל ב-Android מגרסה 4.4 (רמת API 19) ומטה?
המערכת מורידה את הגופנים של האמוג'י בבקשה הראשונה, אם הם לא קיימים במכשיר. תזמון ההורדות שקוף לאפליקציה.
הורדת הגופן תימשך כ-150 אלפיות השנייה
כדי לאתחל את EmojiCompat
.
בשלב הזה, מבנה הנתונים שבו מאתרים את האמוג'י נטען והוא משתמש בכ-200KB.
כן. אמוג'י קומפט מספק מחלקות סיוע לווידג'טים מותאמים אישית. כמו כן
שאפשר לעבד מראש מחרוזת נתונה ולהמיר אותה
Spanned
למידע נוסף על כלי העזר לווידג'טים
מתייחסים
שימוש באמוג'י שתואם לווידג'טים בהתאמה אישית
.
אפשר לכלול את EmojiCompat
תמיכה בספרייה או בווידג'טים שלה באפליקציות שתומכות במכשירים
שפועלת בהם מערכת Android מגרסה 4.4 (רמת API 19) ומטה. עם זאת, אם מכשיר
בגרסת Android שלפני רמת API 19,
EmojiCompat
והווידג'טים שלו נמצאים
'ללא פעולה' . המשמעות היא
EmojiTextView
מתנהג בדיוק
כמו TextView
רגיל.
מופע EmojiCompat
; את המידע באופן מיידי
נכנס למצב
LOAD_STATE_SUCCEEDED
כשקוראים לפונקציה
init()
.
מקורות מידע נוספים
לקבלת מידע נוסף על השימוש
EmojiCompat
הספרייה EmojiCompat.