Emoji kullanımı tüm uygulama türlerinde hızla arttığından standart emoji grubu Unicode tarafından yılda bir kez yenilenir.
Uygulamanız internet içeriği gösteriyorsa veya metin girişi sağlıyorsa en son emoji yazı tiplerini desteklemenizi önemle tavsiye ederiz. Aksi takdirde, sonraki emojiler tofu (☐) adı verilen küçük bir kare kutu veya yanlış oluşturulmuş diğer emoji sıralamaları olarak gösterilebilir.
Android 11 (API düzeyi 30) ve önceki sürümler emoji yazı tipini güncelleyemez. Bu nedenle, bu sürümlerde emoji 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ığı, Android'in daha eski sürümleriyle daha basit geriye dönük uyumluluk sağlar. emoji2
kitaplığı, AppCompat
kitaplığının bir bağımlılığıdır ve çalışması için başka bir yapılandırma gerektirmez.
Oluşturma bölümünde emoji desteği
Mart 2023 BOM (Oluşturma kullanıcı arayüzü 1.4), API 21'e kadar eski Android sürümleriyle geriye dönük uyumluluk da dahil olmak üzere en son emoji sürümünü destekler. Bu sayfada, View sisteminde modern emojilerin nasıl yapılandırılacağı açıklanmaktadır. Daha fazla bilgi için Oluşturma bölümünde emoji sayfasına bakın.
Ön koşullar
Uygulamanızın yeni emojileri düzgün şekilde gösterdiğinden emin olmak için Android 10 (API düzeyi 29) veya daha eski bir sürümün yüklü olduğu bir cihazda uygulamayı başlatın. Bu sayfada, test etmek için görüntüleyebileceğiniz modern emojiler yer alır.
En son emojileri desteklemek için AppCompat'i kullanma
AppCompat
1.4 sürümü emoji desteği içerir.
Emoji desteği için AppCompat
simgesini kullanmak üzere aşağıdakileri yapın:
Modülünüzün
AppCompat
kitaplığının 1.4.0-alpha01 veya daha yeni bir sürümüne bağlı olduğundan emin olun.build.gradle // Ensure version is 1.4.0-alpha01 or higher. implementation "androidx.appcompat:appcompat.$appcompatVersion"
Metin görüntüleyen tüm etkinliklerin
AppCompatActivity
sınıfını genişlettiğinden emin olun.Kotlin
MyActivity.kt class MyActivity: AppCompatActivity { ... }
Java
MyActivity.java class MyActivity extends AppCompatActivity { ... }
Uygulamanızı Android 10 veya önceki bir sürümü çalıştıran bir cihazda başlatıp aşağıdaki test dizesini görüntüleyerek entegrasyonunuzu test edin. Tüm karakterlerin doğru şekilde oluşturulduğundan emin olun.
- 14.0: 🫠, 🫱🏼🫲🏿, 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻❄️
- 12.1: 🧑🏻🦰, 🧑🏿🦯, 👩🏻🤝👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼🤝👩🏻
Uygulamanız, emoji2
ile uyumlu indirilebilir yazı tipi sağlayıcısı sunan tüm cihazlarda (ör. Google Play Hizmetleri tarafından desteklenen cihazlar) geriye dönük uyumlu emojileri otomatik olarak gösterir.
Uygulamanız AppCompat kullanıyorsa ancak tofu (☐) gösteriyorsa
Bazı durumlarda, AppCompat
kitaplığını ekleseniz bile uygulamanız uygun emoji yerine tofu gösterebilir. Olası açıklamalar ve çözümler aşağıda verilmiştir.
Uygulamayı kısa süre önce flaşlanmış bir cihazda veya yeni bir emülatörde çalıştırıyorsanız
Başlatma sırasında oluşabilecek yazı tipi önbelleğe alma işlemlerini temizlemek için uygulamanın Google Play Hizmetleri verilerini temizleyin. Bu işlem genellikle birkaç saat içinde sorunu çözer.
Uygulama verilerini temizlemek için aşağıdakileri yapın:
Android cihazınızda Ayarlar'ı açın.
Uygulamalar ve bildirimler'e dokunun.
Tüm uygulamaları göster veya Uygulama bilgileri'ne dokunun.
Uygulamalar arasında gezinip Google Play Hizmetleri'ne dokunun.
Depolama alanı ve önbellek'e dokunun.
Önbelleği temizle'ye dokunun.
Uygulamanız, metinle ilgili bir AppCompat sınıfı kullanmıyor
Bu durum, AppCompatActivity
sınıfını genişletmezseniz veya kodda TextView
gibi bir görünümü örneklendirirseniz ortaya çıkabilir. Aşağıdakileri kontrol edin:
- Etkinlik
AppCompatActivity
saat uzatıldı. - Görünüm kodda oluşturuluyorsa doğru
AppCompat
alt sınıfını kullanın.
AppCompatActivity
, XML'i şişirirken TextView
yerine AppCompatTextView
'i otomatik olarak şişirir. Bu nedenle XML'inizi 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
Daha eski bir API düzeyinde bir emülatör kullanırken emoji2
'ün yazı tipi sağlayıcıyı bulabilmesi için paketlenmiş Google Play Hizmetleri'ni güncellemeniz gerekebilir. 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 olduğundan emin olun.
AppCompat olmadan emoji desteği
Uygulamanız AppCompat
içeremiyorsa doğrudan emoji2
kullanabilir. Bu yöntem daha fazla çalışma gerektirdiğinden, yalnızca uygulamanız AppCompat
'yi kullanıamıyorsa bu yöntemi kullanın.
AppCompat
kitaplığı olmadan emojileri desteklemek için aşağıdakileri yapın:
Uygulamanızın
build.gradle
dosyasınaemoji2
veemoji2-views
öğelerini ekleyin.build.gradle def emojiVersion = "1.0.0-alpha03" implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-views:$emojiVersion"
emoji2-views
modülü,EmojiCompat
'ı uygulayanTextView
,Button
veEditText
alt sınıfları sağlar.EmojiCompat
zaten uygulandığı içinAppCompat
içeren bir uygulamada kullanmayın.XML ve kodda
TextView
,EditText
veyaButton
kullandığınız her yerde bunun yerineEmojiTextView
,EmojiEditText
veyaEmojiButton
kullanın.activity_main.xml <androidx.emoji2.widget.EmojiTextView ... /> <androidx.emoji2.widget.EmojiEditText ... /> <androidx.emoji2.widget.EmojiButton ... />
emoji2
modülü eklendiğinde sistem, uygulama başlatıldıktan kısa süre sonra emoji yazı tipini otomatik olarak yüklemek için varsayılan indirilebilir yazı tipi sağlayıcıyı kullanır. Başka yapılandırma gerekmez.Entegrasyonunuzu test etmek için uygulamanızı Android 11 veya daha eski bir sürüm yüklü ve aşağıdaki test dizelerini gösteren bir cihazda başlatın. Tüm karakterlerin doğru şekilde oluşturulduğundan emin olun.
- 14.0: 🫠, 🫱🏼🫲🏿, 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻❄️
- 12.1: 🧑🏻🦰, 🧑🏿🦯, 👩🏻🤝👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼🤝👩🏻
EmojiCompat'i widget'lar olmadan kullanma
EmojiCompat
, doğru resimleri oluşturmak için EmojiSpan
kullanır. Bu nedenle, belirli bir CharSequence
nesnesini EmojiSpan
nesneleri içeren bir Spanned
nesnesine dönüştürmesi gerekir.
EmojiCompat sınıfı, CharSequences
öğelerini Spanned
örneklerine dönüştürmek için process()
yöntemini sağlar. Bu yöntemi kullanarak process()
işlevini arka planda çağırabilir ve sonuçları ö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");
Giriş yöntemi düzenleyiciler için EmojiCompat'i kullanma
EmojiCompat
sınıfı, klavyelerin etkileşimde bulundukları uygulama tarafından desteklenen emojileri oluşturmasına olanak tanır. Giriş yöntemi düzenleyiciler (IME'ler), EmojiCompat
örneğinin emoji oluşturup oluşturamayacağını kontrol etmek için getEmojiMatch()
yöntemini kullanabilir. Bu yöntem, bir emojinin CharSequence
değerini alır ve EmojiCompat
emojiyi algılayıp oluşturabiliyorsa true
değerini döndürür.
Klavye, palette hangi emojinin oluşturulacağını belirlemek için uygulamanın desteklediği EmojiCompat
sürümünü de kontrol edebilir. Klavye, sürümünü kontrol etmek için (varsa) EditorInfo.extras
paketinde aşağıdaki anahtarları arayabilir:
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 mevcutsa vetrue
olarak ayarlanmışsa uygulama, sistemde mevcut olsalar bile tüm emojileri değiştirmek içinEmojiCompat
'i yapılandırır.
EmojiCompat örneğini yapılandırma hakkında daha fazla bilgi edinin.
Özel görünümlerde emoji kullanma
Uygulamanızda TextView
'nin doğrudan veya dolaylı alt sınıfları olan özel görünümler (ör. Button
, Switch
veya EditText
) varsa ve bu görünümler kullanıcı tarafından oluşturulan içerikleri gösterebiliyorsa her biri EmojiCompat
'i uygulamalıdır.
Süreç, uygulamanızın AppCompat
kitaplığını kullanıp kullanmadığına bağlı olarak değişir.
AppCompat ile uygulamalar için özel görünümler ekleme
Uygulamanız AppCompat
kullanıyorsa platform uygulaması yerine AppCompat
uygulamasını genişletin. AppCompat
'te görüntülemelerinizi nasıl artıracağınızla ilgili kılavuz olarak aşağıdaki tabloyu kullanın:
Uzatmak yerine... | Genişletme |
---|---|
TextView
|
AppCompatTextView
|
EditText
|
AppCompatEditText
|
ToggleButton
|
AppCompatToggleButton
|
Switch
|
SwitchCompat
|
Button
|
AppCompatButton
|
CheckedTextView
|
AppCompatCheckedTextView
|
RadioButton
|
AppCompatRadioButton
|
CheckBox
|
AppCompatCheckBox
|
AutoCompleteTextView
|
AppCompatAutoCompleteTextView
|
MultiAutoCompleteTextView
|
AppCompatMultiAutoCompleteTextView
|
AppCompat içermeyen uygulamalar için özel görünümler ekleme
Uygulamanız AppCompat
kullanmıyorsa emoji2-views-helper
modülündeki, özel görünümlerde kullanılmak üzere tasarlanmış görüntü entegrasyonu yardımcılarını kullanın. Bunlar, AppCompat
kitaplığının emoji desteğini uygulamak için kullandığı yardımcılardır.
AppCompat
kullanmayan uygulamalar için özel görünümleri desteklemek üzere aşağıdaki adımları tamamlayın.
emoji2-views-helper
kitaplığını ekleyin:implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
Uygulamanızın özel görünümlerine
EmojiTextViewHelper
veyaEmojiEditTextHelper
eklemek için talimatları uygulayın.Uygulamanızı Android 10 veya önceki bir sürümü çalıştıran bir cihazda başlatıp aşağıdaki test dizesini görüntüleyerek entegrasyonunuzu test edin. Tüm karakterlerin doğru şekilde oluşturulduğundan emin olun.
- 14.0: 🫠, 🫱🏼🫲🏿, 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻❄️
- 12.1: 🧑🏻🦰, 🧑🏿🦯, 👩🏻🤝👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼🤝👩🏻
emoji2'yi işlemeyle ilgili isteğe bağlı özellikler
emoji2
kitaplığını uygulamanıza ekledikten sonra bu bölümde açıklanan isteğe bağlı özellikleri ekleyebilirsiniz.
emoji2'yi farklı bir yazı tipi veya indirilebilir yazı tipi sağlayıcısı kullanacak şekilde yapılandırma
emoji2
'ü farklı bir yazı tipi veya indirilebilir yazı tipi sağlayıcısı kullanacak şekilde yapılandırmak için aşağıdakileri yapın:
Aşağıdakileri manifest'inize ekleyerek
EmojiCompatInitializer
seçeneğini devre dışı bırakın:<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:
DefaultEmojiCompatConfiguration.create(context)
çağrısını yaparak varsayılan yapılandırmayı kullanın.EmojiCompat.Config
simgesini kullanarak yazı tiplerini başka bir kaynaktan yüklemek için kendi yapılandırmanızı oluşturun. Bu sınıf, aşağıdaki bölümde açıklandığı gibiEmojiCompat
davranışınızı değiştirmek için çeşitli seçenekler sunar.
EmojiCompat davranışınızı değiştirme
EmojiCompat
davranışını değiştirmek için bir EmojiCompat.Config
örneği kullanabilirsiniz.
En önemli yapılandırma seçeneği, EmojiCompat
'ın yazı tipini ne zaman yükleyeceğini kontrol eden setMetadataLoadStrategy()
değişkenidir. EmojiCompat.load()
çağrıldıktan sonra yazı tipi yükleme işlemi başlar ve gerekli indirmeler tetiklenir. Uygulamanız sağlamadığı sürece sistem, yazı tipi indirme için bir mesaj dizisi oluşturur.
LOAD_STRATEGY_MANUAL
, EmojiCompat.load()
'un ne zaman çağrılacağını kontrol etmenize olanak tanır ve LOAD_STRATEGY_DEFAULT
, EmojiCompat.init()
çağrısında yüklemenin eşzamanlı olarak başlatılmasını sağlar.
Çoğu uygulama, yazı tipi yükleme iş parçacığı ve zamanlamasını kontrol edebilmek için LOAD_STRATEGY_MANUAL
kullanır. Uygulamanız, başlatma gecikmesi yaşanmasını önlemek için ilk ekran görüntülenene kadar ertelenmelidir. EmojiCompatInitializer
bu uygulamayı takip eder ve emoji yazı tipini yüklemeyi ilk ekran devam edene kadar erteler.
Yapılandırmanın diğer yönlerini ayarlamak için temel sınıftaki aşağıdaki yöntemleri kullanın:
setReplaceAll()
:EmojiCompat
'ın bulduğu tüm emojileriEmojiSpan
örnekleri ile değiştirip değiştirmeyeceğini belirler.EmojiCompat
, sistemin bir emojiyi oluşturabileceğini anladığında varsayılan olarak bu emojiyi değiştirmez.true
olarak ayarlandığındaEmojiCompat
, tüm emojileriEmojiSpan
nesneleriyle değiştirir.setEmojiSpanIndicatorEnabled()
:EmojiCompat
'ın bir emojiyiEmojiSpan
nesnesi ile değiştirip değiştirmediğini belirtir.true
olarak ayarlandığındaEmojiCompat
,EmojiSpan
için bir arka plan çizer. Bu yöntem, çoğunlukla hata ayıklama amacıyla kullanılır.setEmojiSpanIndicatorColor
: rengiEmojiSpan
değerini gösterecek şekilde ayarlar. Varsayılan değerGREEN
.registerInitCallback()
: Bir uygulamayıEmojiCompat
başlatma işleminin durumu hakkında bilgilendirir.
İlk kullanıma hazırlama dinleyicileri ekleme
EmojiCompat
ve EmojiCompat.Config
sınıfları, başlatma geri çağırma işlevlerini kaydetme ve kaydını silme için registerInitCallback()
ve unregisterInitCallback()
yöntemlerini sağlar. Uygulamanız, emojileri arka plan iş parçacığında veya özel bir görünümde işlemeden önce EmojiCompat
'ün başlatılmasını beklemek için bu geri çağırma işlevlerini kullanır.
Bu yöntemleri kullanmak için EmojiCompat.InitCallback
sınıfının bir örneğini oluşturun. Bu yöntemleri çağırın ve EmojiCompat.InitCallback
sınıfının örneğini iletin. İlklendirme başarılı olduğunda EmojiCompat
sınıfı onInitialized()
yöntemini çağırır. Kitaplık başlatılamazsa EmojiCompat
sınıfı onFailed()
yöntemini çağırır.
İlklendirme durumunu herhangi bir noktada kontrol etmek için getLoadState()
yöntemini çağırın. 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 paketlenmiş yazı tiplerini destekleme
Uygulamanıza emoji yazı tipi eklemek için emoji2-bundled
yapısını kullanabilirsiniz.
Ancak NotoColorEmoji
yazı tipi 10 MB'tan büyük olduğundan, mümkün olduğunda uygulamanızda indirilebilir yazı tipleri kullanmanızı önemle tavsiye ederiz. emoji2-bundled
yapı, indirilebilir yazı tiplerini desteklemeyen cihazlardaki uygulamalar için tasarlanmıştır.
emoji2-bundled
yapısını kullanmak için aşağıdakileri yapın:
emoji2-bundled
veemoji2
yapılarını ekleyin:implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
emoji2
'ü, paketlenmiş yapılandırmayı kullanacak şekilde yapılandırın:Kotlin
EmojiCompat.init(BundledEmojiCompatConfig(context))
Java
EmojiCompat.init(new BundledEmojiCompatConfig(context));
emojicompat
'üAppCompat
ile veyaAppCompat
olmadan dahil etmek için önceki adımları uygulayarak entegrasyonu test edin. Test dizesinin doğru ş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ı (EmojiCompatInitializer
) ve DefaultEmojiCompatConfig
dosyasını kullanarak varsayılan yapılandırmayı uygular.
Uygulamanızda ilk etkinlik devam ettikten sonra başlatıcı, emoji yazı tipi yüklemeyi planlar. Bu kısa gecikme, uygulamanızın arka plan iş parçacığında yazı tipi yüklenmesinden kaynaklanan olası gecikmeler olmadan ilk içeriğini göstermesine olanak tanır.
DefaultEmojiCompatConfig
, Google Play hizmetleri gibi EmojiCompat
arayüzünü uygulayan, sisteme yüklenmiş indirilebilir bir yazı tipi sağlayıcı arar. Google Play Hizmetleri tarafından desteklenen cihazlarda bu işlem, Google Play Hizmetleri kullanılarak yazı tipini yükler.
Başlatıcı, emoji yazı tipini yüklemek için bir arka plan iş parçacığı oluşturur ve yazı tipi indirme işleminin zaman aşımına uğraması 10 saniye kadar sürebilir. Yazı tipi indirildikten sonra, EmojiCompat
'ün arka plan iş parçacığında başlatılması yaklaşık 150 milisaniye sürer.
EmojiCompatInitializer
'u devre dışı bıraksanız bile EmojiCompat
'ün başlatılmasını erteleyebilirsiniz. EmojiCompat
'u manuel olarak yapılandırırsanız, ilk ekran yüklenirken arka planda çekişmeyi önlemek için uygulamanızın ilk ekranı görüntülendikten sonra EmojiCompat.load()
'ı çağırın.
Yüklendikten sonra EmojiCompat
, emoji meta verilerini depolamak için yaklaşık 300 KB RAM kullanır.