Standart emoji grubu her yıl yenilenen Emoji kullanımı arttıkça Unicode hızlı bir şekilde değiştirildi.
Uygulamanız internet içeriği görüntülüyorsa veya metin girişi sağlıyorsa en son emoji yazı tiplerinin desteklenmesini öneriyoruz. Aksi takdirde daha sonraki emojiler tofu (☐) adında küçük bir kare kutu veya yanlış oluşturulmuş başka bir metin emin olmanız gerekir.
Android 11 (API düzeyi 30) ve önceki sürümler emoji yazı tipini güncelleyemediğinden bunları gösteren uygulamalar manuel olarak güncellenmelidir.
Aşağıda modern emoji örnekleri verilmiştir.
Örnekler | Sürüm |
---|---|
🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (Eylül 2021) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (Eylül 2020) |
🥲 🥷🏿 🐻❄️ | 13.0 (Mart 2020) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (Ekim 2019) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (Şubat 2019) |
androidx.emoji2:emoji2
kitaplığı daha basit geriye dönük uyumluluk sağlar
daha düşük Android sürümleri. emoji2
kitaplığı
AppCompat
kitaplığı için geçerlidir ve şunu gerektirmez:
başka yapılandırmalar vardır.
Oluşturma özelliğinde emoji desteği
BOM Mart 2023 (Compose UI 1.4) en son emojileri destekler. sürümüne kadar, eski Android sürümleriyle geriye dönük uyumluluk da dahil olmak üzere API 21 Bu sayfada, modern emojilerin View sisteminde nasıl yapılandırılacağı açıklanmaktadır. Görüntüleyin Emoji'nin altındaki emojiler sayfasına göz atın.
Ön koşullar
Uygulamanızın yeni emojileri düzgün şekilde gösterdiğini onaylamak için uygulamayı bir cihazda başlatın Android 10 (API düzeyi 29) veya önceki sürümleri çalıştıran. Bu sayfada kullandığınız modern emojiler var görüntüleyebilirsiniz.
En yeni emojileri desteklemek için AppCompat'ı kullanın
AppCompat
1.4 sürümünde emoji desteği de bulunmaktadır.
AppCompat
özelliğini kullanarak emojileri desteklemek için aşağıdakileri yapın:
Modülünüzün
AppCompat
kitaplığı sürümüne bağlı olup olmadığını kontrol edin 1.4.0-alpha01 veya daha yüksek.build.gradle // Ensure version is 1.4.0-alpha01 or higher. implementation "androidx.appcompat:appcompat.$appcompatVersion"
Metin gösteren tüm etkinliklerin
AppCompatActivity
sınıfını kullanır.Kotlin
MyActivity.kt class MyActivity: AppCompatActivity { ... }
Java
MyActivity.java class MyActivity extends AppCompatActivity { ... }
Uygulamanızı Android 10 çalıştıran bir cihazda başlatarak entegrasyonunuzu test edin veya daha düşük bir değerde olacak ve aşağıdaki test dizesini görüntüleyecektir. Tüm karakterlerin doğru şekilde oluşturabilirsiniz.
- 14.0: 🫠, 🫱🏼 🫲🏿, 🫰🏽
- 13.1: 😶 🌫️, 🧔🏻 ♀️, 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻 🔍
- 12.1: 🧑🏻 🦰, 🧑🏿 🦯, 👩🏻 🤝 👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼 🤝 👩🏻
Uygulamanız, şu sürümü kullanan tüm cihazlarda otomatik olarak geriye dönük uyumlu emojiler gösteriyor:
Cihazlar gibi emoji2
uyumlu bir indirilebilir yazı tipi sağlayıcı sağlayın
Google Play Hizmetleri tarafından desteklenir.
Uygulamanızda AppCompat kullanılıyorsa ancak tofu gösteriliyorsa (☐)
Bazı durumlarda uygulamanızda doğru emoji yerine tofu gösterilebilir.
AppCompat
kitaplığını eklediniz. Aşağıda olası açıklamalar ve
çözümler.
Uygulamayı kısa süre önce güncellenen bir cihazda veya yeni bir emülatörde çalıştırıyorsunuz
Kullanılabilecek yazı tipi önbelleğe alma işlemlerini temizlemek için uygulamanın Google Play Hizmetleri verilerini temizleyin olması gerekir. Bu işlem genellikle birkaç saat sonra sorunu çözer.
Uygulama verilerini temizlemek için şunları yapın:
Android destekli cihazınızda Ayarlar'ı açın.
Uygulamalar ve bildirimler'e dokunun.
Tüm uygulamaları göster'e veya Uygulama bilgileri'ne dokunun.
Uygulamalar arasında gezinip Google Play Hizmetleri'ne dokunun.
Depolama ve önbellek hakkında daha fazla bilgi edinin.
Önbelleği temizle'ye dokunun.
Uygulamanızda AppCompat metinle ilgili bir sınıf kullanılmıyor
Bu durum, AppCompatActivity
uzantısını uzatmazsanız veya bir örneklendirirseniz ortaya çıkabilir
TextView
gibi kodda görüntüleyin. Şunları kontrol edin:
- Etkinliğin geçerlilik süresi
AppCompatActivity
tarihinde sona eriyor. - Görünümü kodda oluşturuyorsanız doğru
AppCompat
alt sınıf gibidir.
AppCompatActivity
, bunun yerine otomatik olarak AppCompatTextView
değerini şişirir
TextView
sağlar, böylece XML'nizi güncellemeniz gerekmez.
Test telefonu indirilebilir yazı tiplerini desteklemiyor
DefaultEmojiCompatConfig.create
işlevinin null olmayan bir yapılandırma döndürdüğünü doğrulayın.
Daha önceki bir API düzeyindeki emülatör, Google Play Hizmetleri'ni yükseltmedi
Önceki API düzeyinde bir emülatör kullanırken
yazı tipi sağlayıcıyı bulmak için emoji2
için Google Play hizmetlerini oluşturdu. Bunu yapmak için
emülatörde Google Play Store'a giriş yapın.
Uyumlu bir sürümün yüklü olduğunu doğrulamak için aşağıdakileri yapın:
Aşağıdaki komutu çalıştırın:
adb shell dumpsys package com.google.android.gms | grep version
versionCode
değerinin211200000
değerinden yüksek olup olmadığını kontrol edin.
AppCompat olmadan emoji desteği
Uygulamanız AppCompat
içeremez. emoji2
doğrudan kullanılabilir. Bu
daha fazla çalışma gerektirdiğinden bu yöntemi yalnızca uygulamanız AppCompat
hizmetini kullanamıyorsa kullanın.
AppCompat
kitaplığı olmadan emojileri desteklemek için aşağıdakileri yapın:
Uygulamanızın
build.gradle
dosyasınaemoji2
veemoji2-views
dosyalarını ekleyin.build.gradle def emojiVersion = "1.0.0-alpha03" implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-views:$emojiVersion"
emoji2-views
modülü şunun alt sınıfları: Aşağıdakileri uygulayanTextView
,Button
veEditText
EmojiCompat
. Kullanmama çünkü şu andaAppCompat
içeren bir uygulamadaEmojiCompat
.XML ve kod olarak (
TextView
,EditText
veyaButton
- kullanımEmojiTextView
,EmojiEditText
veyaEmojiButton
tıklayın.activity_main.xml <androidx.emoji2.widget.EmojiTextView ... /> <androidx.emoji2.widget.EmojiEditText ... /> <androidx.emoji2.widget.EmojiButton ... />
emoji2
modülünü dahil ettiğinizde sistem, varsayılan olarak indirilebilen yazı tipini yüklemek için yazı tipi sağlayıcısı otomatik olarak kısa bir süre içinde güncellenir. Sıra No: ek yapılandırma gerekiyor.Entegrasyonunuzu test etmek için uygulamanızı Android 11 veya sonraki bir sürümün yüklü olduğu bir cihazda başlatın. değerini düşürebilir ve aşağıdaki test dizelerini görüntüleyebilirsiniz. Tüm karakterlerin doğru şekilde oluşturabilirsiniz.
- 14.0: 🫠, 🫱🏼 🫲🏿, 🫰🏽
- 13.1: 😶 🌫️, 🧔🏻 ♀️, 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻 🔍
- 12.1: 🧑🏻 🦰, 🧑🏿 🦯, 👩🏻 🤝 👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼 🤝 👩🏻
EmojiCompat'ı widget'lar olmadan kullan
EmojiCompat
, şu işlemler için EmojiSpan
kullanıyor:
doğru resimler oluşturmak için kullanın. Dolayısıyla, sisteme girilen herhangi bir
CharSequence
nesnesini
EmojiSpan
nesne içeren Spanned
nesne.
EmojiCompat sınıfı, CharSequences
dönüşümünü yapmak için process()
yöntemini sağlar
Spanned
örneğe dağıtıldı. Bu yöntemi kullanarak process()
öğesini
ve sonuçları önbelleğe alır. 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");
Giriş yöntemi düzenleyicileri için EmojiCompat'ı kullan
EmojiCompat
sınıfı, klavyelerin uygulama tarafından desteklenen emojiyi oluşturmasını sağlar.
daha fazla bilgi edindiniz. Giriş yöntemi düzenleyicileri
(IME'ler)
getEmojiMatch()
yönteminde bir EmojiCompat
örneğinin bir sorgu oluşturup oluşturmadığını kontrol etmek için
emoji'ye dokunun. Bu yöntem bir CharSequence
ifadesi gösterilir ve EmojiCompat
emojiyi algılayıp oluşturabiliyorsa true
değerini döndürür.
Klavye, uygulamanın desteklediği EmojiCompat
sürümünü de kontrol edebilir
Palette hangi emojinin oluşturulacağını belirleyin. Sürümü kontrol etmek için
klavye varsa, klavyedeki
EditorInfo.extras
grup:
EDITOR_INFO_METAVERSION_KEY
: uygulamanın kullandığı emoji meta verilerinin sürümünü temsil eder. Bu anahtar yoksa uygulamaEmojiCompat
kullanmıyor demektir.EDITOR_INFO_REPLACE_ALL_KEY
: anahtar varsa vetrue
olarak ayarlanmışsa uygulama Sistemde mevcut olsalar bile tüm emojilerin değiştirilmesi içinEmojiCompat
.
Örnek yapılandırmanın nasıl yapılacağı hakkında daha fazla bilgi EmojiCompat değerleridir.
Özel görünümlerde emoji kullanma
Uygulamanızda kullanılan özel görünümler
TextView
öğesinin doğrudan veya dolaylı alt sınıfları; örneğin, Button
,
Switch
veya EditText
(ve bu görünümlerde kullanıcı tarafından oluşturulanlar gösterilebilir)
her biri, uygulamayı
EmojiCompat
.
İşlem, uygulamanızın AppCompat
kitaplığını kullanıp kullanmadığına bağlı olarak değişiklik gösterir.
AppCompat ile uygulamalar için özel görünümler ekleme
Uygulamanız AppCompat
kullanıyorsaAppCompat
ele alacağız. Aşağıdaki tabloyu,
AppCompat
genelindeki görüntüleme sayınızı artırın:
Uzatmak yerine... | Uzat |
---|---|
TextView
|
AppCompatTextView
|
EditText
|
AppCompatEditText
|
ToggleButton
|
AppCompatToggleButton
|
Switch
|
SwitchCompat
|
Button
|
AppCompatButton
|
CheckedTextView
|
AppCompatCheckedTextView
|
RadioButton
|
AppCompatRadioButton
|
CheckBox
|
AppCompatCheckBox
|
AutoCompleteTextView
|
AppCompatAutoCompleteTextView
|
MultiAutoCompleteTextView
|
AppCompatMultiAutoCompleteTextView
|
AppCompat olmayan uygulamalar için özel görünümler ekleme
Uygulamanızda AppCompat
kullanılmıyorsa şuradaki görünüm entegrasyon yardımcılarını kullanın:
Özel görünümlerde kullanılmak üzere tasarlanmış emoji2-views-helper
modülü. Bu
AppCompat
kitaplığının emoji desteğini uygulamak için kullandığı yardımcılardır.
Alan adını kullanmayan uygulamalarda özel görünümleri desteklemek için aşağıdaki adımları
AppCompat
emoji2-views-helper
kitaplığını ekleyin:implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
Dahil etmek için talimatları uygulayın:
EmojiTextViewHelper
veyaEmojiEditTextHelper
dönüşüm elde edebilirsiniz.Uygulamanızı Android 10 çalıştıran bir cihazda başlatarak entegrasyonunuzu test edin veya daha düşük bir değerde olacak ve aşağıdaki test dizesini görüntüleyecektir. Tüm karakterlerin doğru şekilde oluşturabilirsiniz.
- 14.0: 🫠, 🫱🏼 🫲🏿, 🫰🏽
- 13.1: 😶 🌫️, 🧔🏻 ♀️, 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻 🔍
- 12.1: 🧑🏻 🦰, 🧑🏿 🦯, 👩🏻 🤝 👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼 🤝 👩🏻
Emoji2'nin kullanımı için isteğe bağlı özellikler
emoji2
kitaplığını uygulamanıza ekledikten sonra isteğe bağlı
özellikleri için de kullanılabilir.
Emoji2'yi farklı bir yazı tipi veya indirilebilir yazı tipi sağlayıcı kullanacak şekilde yapılandırın
emoji2
öğesini farklı bir yazı tipi veya indirilebilir yazı tipi sağlayıcı kullanacak şekilde yapılandırmak için:
şu:
Şunu devre dışı bırak:
EmojiCompatInitializer
aşağıdaki kodu manifest dosyanıza ekleyerek:<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>
Aşağıdakilerden birini yapın:
Şu numarayı arayarak varsayılan yapılandırmayı kullan:
DefaultEmojiCompatConfiguration.create(context)
.Başka bir kaynaktaki yazı tiplerini yüklemek için
EmojiCompat.Config
. Bu sınıf,EmojiCompat
öğenizi değiştirmeniz için çeşitli seçenekler sunar aşağıdaki bölümde açıklandığı gibi).
EmojiCompat davranışınızı değiştirin
EmojiCompat
öğesini değiştirmek için EmojiCompat.Config
örneği kullanabilirsiniz
gösterir.
En önemli yapılandırma seçeneği
setMetadataLoadStrategy()
EmojiCompat
, yazı tipini ne zaman yüklediğini kontrol eder. Yazı tipi yükleme işlemi hemen başlar
EmojiCompat.load()
çağrılır ve bu, gerekli indirmeleri tetikler. İlgili içeriği oluşturmak için kullanılan
uygulamanız, yazı tipi indirme işlemi için bir iş parçacığı oluşturmaz.
LOAD_STRATEGY_MANUAL
, EmojiCompat.load()
çağrılacağı zamanı kontrol etmenizi sağlar ve
LOAD_STRATEGY_DEFAULT
çağrısında yüklemenin eşzamanlı olarak başlamasını sağlar:
EmojiCompat.init()
.
Çoğu uygulama, mesaj dizisini ve zamanlamayı kontrol edebilmek için LOAD_STRATEGY_MANUAL
kullanır
görebilirsiniz. Uygulamanız, ilk ekran görüntülenene kadar
başlatma gecikmesi gibi durumları ortadan kaldırın. EmojiCompatInitializer
bunu takip ediyor
alıştırma yapar ve emoji yazı tipini yüklemeyi ilk ekran devam ettirilene kadar erteler.
yapılandırma:
setReplaceAll()
:EmojiCompat
tarafından bulunan tüm emojileri örneklerle değiştirip değiştirmeyeceğini belirler /EmojiSpan
.EmojiCompat
, sistemin varsayılan olarak emoji oluşturulduğunda bu emojinin yerine geçmez.true
olarak ayarlandığındaEmojiCompat
, tüm emojileriEmojiSpan
nesneyle değiştirir.setEmojiSpanIndicatorEnabled()
:EmojiCompat
öğesinin, bir emojiyiEmojiSpan
ile değiştirip değiştirmediğini gösterir nesnesini tanımlayın.true
olarak ayarlandığındaEmojiCompat
,EmojiSpan
. Bu yöntem çoğunlukla hata ayıklama amacıyla kullanılır.setEmojiSpanIndicatorColor
: rengi birEmojiSpan
belirtecek şekilde ayarlar. Varsayılan değer:GREEN
.registerInitCallback()
: bir uygulamayaEmojiCompat
başlatma işleminin durumu hakkında bilgi verir.
İlk kullanıma hazırlama işleyicileri ekleyin
EmojiCompat
ve EmojiCompat.Config
sınıfları şunları sağlıyor:
registerInitCallback()
ve
unregisterInitCallback()
ilk kullanıma hazırlama geri çağırmalarının nasıl kaydedileceğini ve iptal edilmesini sağlayacak yöntemleri keşfedin. Uygulamanız bunları kullanıyor
şurada emojiyi işlemeden önce EmojiCompat
başlatılana kadar beklemek için geri çağırmalar yapın:
bir arka plan ileti dizisinde veya özel görünümde sunulur.
Bu yöntemleri kullanmak için
EmojiCompat.InitCallback
sınıfını kullanır. Bu yöntemleri çağırın ve
EmojiCompat.InitCallback
sınıf. Başlatma başarılı olduğunda
EmojiCompat
sınıfı
onInitialized()
yöntemidir. Kitaplık başlatılamazsa EmojiCompat
sınıfı
onFailed()
yöntemidir.
Başlatma durumunu istediğiniz zaman kontrol etmek için şunu arayın:
getLoadState()
yöntemidir. Bu yöntem aşağıdaki değerlerden birini döndürür:
LOAD_STATE_LOADING
LOAD_STATE_SUCCEEDED
,
veya
LOAD_STATE_FAILED
.
Emoji2 ile gruplandırılmış yazı tiplerini destekleyin
Bir emoji yazı tipini uygulamanızda paket haline getirmek için emoji2-bundled
yapısını kullanabilirsiniz.
Ancak NotoColorEmoji
yazı tipi 10 MB'ın üzerinde olduğu için kesinlikle
Uygulamanızın mümkün olduğunda indirilebilir yazı tiplerini kullanmasını öneririz. İlgili içeriği oluşturmak için kullanılan
emoji2-bundled
yapısı, şunları desteklemeyen cihazlardaki uygulamalar için tasarlanmıştır:
indirilebilir yazı tipleri.
emoji2-bundled
yapısını kullanmak için aşağıdakileri yapın:
emoji2-bundled
veemoji2
yapılarını dahil et:implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
Paket halinde sunulan yapılandırmayı kullanmak için
emoji2
hizmetini yapılandırın:Kotlin
EmojiCompat.init(BundledEmojiCompatConfig(context))
Java
EmojiCompat.init(new BundledEmojiCompatConfig(context));
Aşağıdaki adımları uygulayarak entegrasyonu test edin:
AppCompat
olan veya olmayanemojicompat
. Test dizesinin düzgün şekilde görüntülendiğinden emin olun.- 14.0: 🫠, 🫱🏼 🫲🏿, 🫰🏽
- 13.1: 😶 🌫️, 🧔🏻 ♀️, 🧑🏿 ❤️ 🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻 🔍
- 12.1: 🧑🏻 🦰, 🧑🏿 🦯, 👩🏻 🤝 👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼 🤝 👩🏻
Otomatik EmojiCompat yapılandırmasının etkisi
Sistem, başlangıç kitaplığını kullanarak varsayılan yapılandırmayı uygular.
EmojiCompatInitializer
ve
DefaultEmojiCompatConfig
Başlatıcı, uygulamanızdaki ilk etkinlik devam ettirildiğinde emoji planlar Yazı tipi yükleniyor. Bu kısa gecikme, uygulamanızın ilk içeriğini bir arka plan ileti dizisinde yazı tipi yüklenmesinden kaynaklanan olası gecikme.
DefaultEmojiCompatConfig
, sistem tarafından yüklenmiş indirilebilir bir yazı tipi arar
Google Play gibi EmojiCompat
arayüzünü uygulayan sağlayıcı
kullanıma sunuyoruz. Google Play Hizmetleri tarafından desteklenen cihazlarda bu işlem, yazı tipini
Google Play Hizmetleri.
Başlatıcı, emoji yazı tipini ve yazı tipini yüklemek için bir arka plan ileti dizisi oluşturur
indirme işleminin tamamlanması 10 saniye sürebilir. Yazı tipi
bir arka plan iş parçacığının indirme işlemini tamamlaması yaklaşık 150 milisaniye
EmojiCompat
uygulamasını başlat.
Devre dışı bıraksanız bile EmojiCompat
uygulamasının başlatılmasını ertele
EmojiCompatInitializer
. E-posta adresinizi manuel olarak
EmojiCompat
, gösterildikten sonra EmojiCompat.load()
numaralı telefonu ara
ilk ekranla arka plan çakışmasını önlemek için uygulamanızın
devam edebilir.
Yükleme işleminden sonra, EmojiCompat
emojiyi tutmak için yaklaşık 300 KB RAM kullanır
meta verilerdir.