EmojiCompat
destek kitaplığının amacı:
en yeni emojilerle Android cihazları güncel tutun. Uygulamanızın,
eksik emoji karakterlerinin ☐ şeklinde gösterilmesini engelleyebilir.
cihazınızda metni görüntüleyecek bir yazı tipi olmadığını belirtir. Ölçüt
EmojiCompat
destek kitaplığını kullanarak
Uygulama kullanıcılarınızın en son güncellemeleri almak için Android OS güncellemelerini beklemesine gerek yoktur
emoji'ye dokunun.
![Emoji gösteren cihazlar](https://developer.android.com/static/guide/topics/ui/images/look-and-feel/emoji-compat/emoji-comparison.png?authuser=0000&hl=tr)
Aşağıdaki ilgili kaynaklara bakın:
EmojiCompat nasıl çalışır?
EmojiCompat
destek kitaplığı şunları sağlar:
çalışan cihazlarda geriye dönük uyumlu emoji desteği uygulamak için sınıflar
Android 4.4 (API düzeyi 19) ve sonraki sürümler. Chrome Web Mağazası'ndaki
EmojiCompat
ya gruplanmış ya da
indirilebilir yazı tipleri. Yapılandırma hakkında daha fazla bilgi için
şu bölümlerden faydalanabilirsiniz:
EmojiCompat
belirli bir için emojiyi tanımlar
CharSequence
, bunları şununla değiştirir:
gerekirse EmojiSpans
ve
son olarak emoji glifleri oluşturur. Şekil 2'de işlem gösterilmiştir.
![EmojiCompat işlemi](https://developer.android.com/static/guide/topics/ui/images/look-and-feel/emoji-compat/architecture.png?authuser=0000&hl=tr)
İndirilebilir yazı tipleri yapılandırması
İndirilebilir yazı tipleri yapılandırması, İndirilebilir Yazı Tipleri desteğini kullanır.
emoji yazı tipi indirmenizi sağlayan kitaplık özelliği. Aynı zamanda,
EmojiCompat
tarafından kullanılan emoji meta verileri
destek kitaplığının, Unicode'un en son sürümlerini takip etmesi gerekir
bakın.
Destek kitaplığı bağımlılığı ekleme
EmojiCompat
destek kitaplığını kullanmak için:
uygulama projenizin sınıf yolu bağımlılıklarını
ortamına taşıyabilirsiniz.
Uygulama projenize destek kitaplığı eklemek için:
- Uygulamanızın
build.gradle
dosyasını açın. dependencies
bölümüne destek kitaplığını ekleyin.
Eski
dependencies { ... implementation "androidx.emoji:emoji:28.0.0" }
Kotlin
dependencies { ... implementation("androidx.emoji:emoji:28.0.0") }
İndirilebilir yazı tipini başlatma yapılandırma
Şu işlemler için EmojiCompat
uygulamasını ilk kullanıma hazırlamanız gerekir:
meta verileri ve yazı tipini yüklemektir. Başlatma işlemi biraz zaman alabileceğinden
ilk kullanıma hazırlama işlemi, arka plan iş parçacığı üzerinde çalışır.
EmojiCompat
özelliğini
yazı tipi yapılandırması için aşağıdaki adımları uygulayın:
FontRequest
öğesinin bir örneğini oluşturun yazı tipi sağlayıcı yetkilisini, yazı tipi sağlayıcı paketini, yazı tipi sorgusunu ve sertifika için karma kümelerinin listesini içerir. Daha fazlaFontRequest
hakkında bilgiler, şuraya bakın: değerini İndirilebilir Yazı Tiplerini programatik olarak kullanma İndirilebilir Yazı Tipleri'ndeki belgelerinden faydalanabilirsiniz.- Şunun bir örneğini oluştur:
FontRequestEmojiCompatConfig
. veContext
ve örnek durumlardaFontRequest
. - Şu kodu çağırarak
EmojiCompat
'ı başlatın:init()
yöntemini kullanın veFontRequestEmojiCompatConfig
. - Düzende
EmojiCompat
widget'larını kullanın XML'ler.AppCompat
kullanıyorsanız bu sayfaya EmojiCompat widget'larını AppCompat ile kullanma bölümüne ekleyin.
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"/>
Nasıl yapılandıracağınız hakkında daha fazla bilgi için
İndirilebilir yazı tipiyle EmojiCompat
yapılandırma, Emoji Uyumluluğu örnek uygulamasına gidin
Java
| Kotlin.
Kitaplık bileşenleri
![EmojiCompat işlemindeki kitaplık bileşenleri](https://developer.android.com/static/guide/topics/ui/images/look-and-feel/emoji-compat/basic-components.png?authuser=0000&hl=tr)
- Widget'lar:
EmojiEditText
,EmojiTextView
,EmojiButton
- Kullanılacak varsayılan widget uygulamaları
Şununla
EmojiCompat
:TextView
,EditText
veButton
. EmojiCompat
- Destek kitaplığı için ana herkese açık yüzey. Tüm işlevleri yerine getirir dış aramaları ve koordinatları sistemin diğer parçalarıyla koordine etmenizi sağlar.
EmojiCompat.Config
- Oluşturulacak singleton örneğini yapılandırır.
EmojiSpan
-
ReplacementSpan
karakterini (diziler) içerir ve glifi oluşturur. EmojiCompat
Yazı TipiEmojiCompat
, görüntülemek için bir yazı tipi kullanıyor emoji'ye dokunun. Bu yazı tipi, Android emoji yazı tipi. Yazı tipi aşağıdaki gibi değiştirilir:- Emoji oluşturmak için geriye dönük uyumluluk sağlamak amacıyla tüm emoji'ler karakterler tek bir Unicode kod noktasıyla temsil edilir. Unicode'un U+F0001 ile başlayan Ek Özel Kullanım Alanı-A
-
Ekstra emoji meta verileri, yazı tipine ikili biçimde eklenir ve
şuna göre ayrıştırılır:
EmojiCompat
Veriler yerleştirilmiş yazı tipininmeta
tablosunda Emji.
Yapılandırma seçenekleri
EmojiCompat
örneğini kullanarak şunları yapabilirsiniz:
EmojiCompat
davranışını değiştirin. Tekliflerinizi otomatikleştirmek ve optimize etmek için
Yapılandırmayı ayarlamak için temel sınıfta yer alan aşağıdaki yöntemleri kullanın:
setReplaceAll()
:EmojiCompat
öğesinin gerekip gerekmediğini belirler bulduğu tüm emojileri şununla değiştir:EmojiSpans
. Varsayılan olarakEmojiCompat
, şunun için elinden geleni yapıyor: sistemin emoji oluşturup oluşturamayacağını ve bu emojilerin emoji'ye dokunun.true
olarak ayarlandığındaEmojiCompat
, bulduğu tüm emojilerin yerini alırEmojiSpans
ile.setEmojiSpanIndicatorEnabled()
: Şunları gösterir:EmojiCompat
, bir emojiyi şununla değiştirdi:EmojiSpan
.true
olarak ayarlandığındaEmojiCompat
arka planEmojiSpan
. Çoğunlukla bu yöntem kullanılır bakın.setEmojiSpanIndicatorColor()
: Rengi birEmojiSpan
belirtecek şekilde ayarlar. Varsayılan değerGREEN
değeridir.registerInitCallback
: Uygulamayı, kullanıcının durumu hakkında bilgilendirir.EmojiCompat
başlatma.
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() {...})
İlk kullanıma hazırlama işleyicileri ekleme
EmojiCompat
ve
EmojiCompat
sınıf
sağlamak
registerInitCallback()
ve
unregisterInitCallback()
ilk kullanıma hazırlama geri çağırması kullanma yöntemleri vardır. Bu yöntemleri kullanmak için
örneğinin
EmojiCompat.InitCallback
sınıf. Telefonla arama
ve örnek iletinizin örneğini
EmojiCompat.InitCallback
sınıf.
EmojiCompat
desteğinin başlatılması
başarılı olursa EmojiCompat
sınıfın
onInitialized()
yöntemidir. Kitaplık
başlatılamıyor, EmojiCompat
sınıfın
onFailed()
yöntemidir.
Başlatma durumunu istediğiniz zaman kontrol etmek için şunu arayın:
getLoadState()
.
yöntemidir. Aşağıdaki değerlerden birini döndürür:
LOAD_STATE_LOADING
,
LOAD_STATE_SUCCEEDED
,
veya LOAD_STATE_FAILED
.
EmojiCompat'ı AppCompat widget'larıyla kullanma
AppCompat widgets
kullanıyorsanız
EmojiCompat
widget'ları kullanabilir
başlangıç fiyatı: AppCompat widgets
.
- Bağımlılıklar bölümüne destek kitaplığını ekleyin.
Eski
dependencies { ... implementation "androidx.emoji:emoji-bundled:$version" }
Kotlin
dependencies { implementation("androidx.emoji:emoji-appcompat:$version") }
Eski
dependencies { implementation "androidx.emoji:emoji-appcompat:$version" }
EmojiCompat
hesabını kullan DüzendeAppCompat Widget
widget XML'ler.
<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"/>
Gruplandırılmış yazı tiplerini yapılandırma
EmojiCompat
destek kitaplığı da
yazı tipi sürümü olarak sunulur. Bu pakette
meta verileri bulabilirsiniz. Pakette ayrıca bir
BundledEmojiCompatConfig
.
Meta verileri yüklemek için AssetManager
kullanan
kullanabilirsiniz.
Not: Yazı tipi boyutu birden çok megabayt.
Destek kitaplığı bağımlılığı ekleme
EmojiCompat
destek kitaplığını kullanmak için
paket halinde sunulan yazı tipi yapılandırmasında, uygulama projenizin
bağımlılıklarını nasıl
ortaya koyabileceğinizi açıklayacağız.
Uygulama projenize destek kitaplığı eklemek için:
- Uygulamanızın
build.gradle
dosyasını açın. dependencies
bölümüne destek kitaplığını ekleyin.
Eski
dependencies { ... implementation "androidx.emoji:emoji:28.0.0" }
Kotlin
dependencies { ... implementation("androidx.emoji:emoji:28.0.0") }
EmojiCompat'ı yapılandırmak için gruplandırılmış yazı tiplerini kullanma
Toplu yazı tiplerini kullanarak
EmojiCompat
, aşağıdaki adımları uygulayın:
BundledEmojiCompatConfig
hesabını kullan (EmojiCompat
öğesinin bir örneğini oluşturmak için) veContext
örneğini sağlayın.- Şunu çağırın:
init()
. ilk kullanıma hazırlama yöntemiEmojiCompat
veBundledEmojiCompatConfig
.
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'ı widget'lar olmadan kullanma
EmojiCompat
kullanımları
Doğru resimleri oluşturmak için EmojiSpan
.
Dolayısıyla, belirli bir CharSequence
öğesini
Şunlarla Spanned
örnek:
EmojiSpans
. İlgili içeriği oluşturmak için kullanılan
EmojiCompat
sınıfı,
CharSequences
şuna dönüştür:
Spanned
örnek ve
EmojiSpans
. Bu yöntem kullanıldığında
ham dize yerine işlenen örnekleri işleyip önbelleğe alabilirsiniz
Bu da uygulamanızın performansını
artırır.
Kotlin
val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")
Java
CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");
IME'ler için EmojiCompat'ı kullanma
EmojiCompat
destek kitaplığını kullanarak
klavyeler, kullandıkları uygulama tarafından desteklenen emojiyi
yardımcı olur. IME'ler
hasEmojiGlyph()
.
EmojiCompat
adlı özelliğin uygun olup olmadığını kontrol etme yöntemi
gösteriliyor. Bu yöntemle CharSequence
bir emojiyi verir ve true
EmojiCompat
,
emoji'ye dokunun.
Klavye, uygulamanızın sürümünü
EmojiCompat
, uygulamanın desteklediği kitaplığı
Palette hangi emojinin oluşturulacağını belirlemeyi destekler. Kontrol etmek için
sürümü varsa, klavyenin aşağıdaki
anahtarın bulunduğu
EditorInfo.extras
.
grup:
EDITOR_INFO_METAVERSION_KEY
EDITOR_INFO_REPLACE_ALL_KEY
Anahtar pakette yer alıyorsa değer
Bu sürüm, uygulamanın kullandığı emoji meta verileridir. Bu anahtar
uygulama EmojiCompat
kullanmıyor.
Anahtar varsa ve true
değerine ayarlanmışsa bu durum
uygulama
SetReplaceAll()
yöntemidir. Daha fazla bilgi için
EmojiCompat
yapılandırması,
Yapılandırma seçeneklerine bakın
bölümüne ekleyin.
Anahtarları aldıktan sonra
EditorInfo.extras
paketi,
klavye,
hasEmojiGlyph()
yöntemidir; burada metadataVersion
değeri
EDITOR_INFO_METAVERSION_KEY
,
uygulamanın belirli bir emoji oluşturup oluşturamayacağını kontrol etmek için.
EmojiCompat'ı özel widget'larla kullanma
Dilediğiniz zaman process()
uygulamasını kullanabilirsiniz
yönteminde CharSequence
değerini uygulamanızda ön işleme
Spanned
örneklerini oluşturabilen herhangi bir widget'a ekler; şunun için:
örnek, TextView
. Ayrıca,
EmojiCompat
şu widget'ı sağlar:
özel widget'larınızı emoji desteğiyle zenginleştirmenizi sağlayan özel
ortaya çıkarmasını sağlamaya
yardımcı olur.
- Örnek TextView
- Örnek 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() { ... } }
Sık sorulan sorular
- Yazı tipi indirme işlemini nasıl başlatabilirim?
- İlk kullanıma hazırlama işlemi ne kadar sürer? 'nı inceleyin.
- EmojiCompat destek kitaplığı ne kadar bellek kullanıyor?
- EmojiCompat'ı özel bir TextView için kullanabilir miyim?
- Şu cihazlarda düzen XML'lerine widget eklersem ne olur? Android 4.4 (API düzeyi 19) veya önceki sürümlerde çalışırsanız ne olur?
Emoji yazı tipleri (mevcut değilse) ilk istekte indirilir cihaz üzerinde. İndirme planlaması uygulama için şeffaftır.
Yazı tipi indirildikten sonra yaklaşık 150 milisaniye
EmojiCompat
ilk kullanıma hazırlanır.
Şu anda, emojileri bulmak için kullanılan veri yapısı, uygulamanın belleğe sahiptir ve yaklaşık 200 KB kullanır.
Evet. EmojiCompat, özel widget'lar için yardımcı sınıflar sağlar. Aynı zamanda
belirli bir dizeyi önceden işlemek ve
Spanned
Widget yardımcısı hakkında daha fazla bilgi için
daha fazla bilgi edinmek için
EmojiCompat'ı özel widget'larla kullanma
bölümüne ekleyin.
EmojiCompat
dahil edebilirsiniz
cihazları destekleyen uygulamalarınızda kitaplığı veya widget'larını destekleyin
Android 4.4 (API düzeyi 19) veya önceki sürümleri çalıştıranlar. Ancak, bir cihaz
API düzeyi 19'dan önceki bir Android sürümünde
EmojiCompat
ve widget'ları bir
"işlem yok" durumu. Bunun anlamı,
EmojiTextView
tam olarak davranıyor
normal bir TextView
gibi.
EmojiCompat
örneği; hemen
alır
LOAD_STATE_SUCCEEDED
init()
yöntemidir.
Ek kaynaklar
EmojiCompat
.
kitaplıksa EmojiCompat adlı videoları izleyin.