Emoji kullanımı her türden uygulamada hızla arttığı için standart emoji seti Unicode tarafından yılda bir kez güncellenir.
Uygulamanızda internet içeriği gösteriliyorsa veya metin girişi sağlanıyorsa en yeni emoji yazı tiplerini desteklemenizi önemle tavsiye ederiz. Aksi takdirde, sonraki emoji'ler tofu (☐) adı verilen küçük bir kare kutu veya yanlış oluşturulmuş başka emoji dizileri olarak gösterilebilir.
Android 11 (API düzeyi 30) ve önceki sürümlerde emoji yazı tipi güncellenemez. Bu nedenle, bu sürümlerde emoji gösteren uygulamaların manuel olarak güncellenmesi gerekir.
Aşağıda modern emojilere örnekler verilmiştir.
Örnekler | Sürüm |
---|---|
🇨🇶 | 16.0 (Eylül 2024) |
🐦🔥 🧑🧑🧒🧒 👩🏽🦽➡️ 🇲🇶 | 15.1 (Eylül 2023) |
🩷 🫸🏼 🐦⬛ | 15.0 (Eylül 2022) |
🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (Eylül 2021) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (Eylül 2020) |
🥲 🥷🏿 🐻❄️ | 13.0 (Mart 2020) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (Ekim 2019) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (Şubat 2019) |
BOM Mart 2023 (Compose UI 1.4), API 21'e kadar olan eski Android sürümleriyle geriye dönük uyumluluk da dahil olmak üzere en yeni emoji sürümünü destekler.
Bu destek için uygulamanızda herhangi bir değişiklik yapmanız gerekmez. Text
ve TextField
(Materyal 2 veya Materyal 3) ya da BasicText
ve BasicTextField
kullanıyorsanız modern emoji desteğini hemen kullanmaya başlayabilirsiniz.
Uygulamanızdaki en yeni emojileri test etmenin en iyi yolu, API 30 veya altı sürümünü çalıştıran gerçek bir cihaz kullanmaktır.
Özel bir emoji çözümü kullanıyorsanız veya başka bir nedenle Oluşturma'da varsayılan emoji çözünürlüğünü devre dışı bırakmanız gerekiyorsa PlatformTextStyle(emojiSupportMatch)
kullanabilirsiniz:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
Birlikte çalışabilirlik
Uygulamanızda aynı Activity
içinde hem Views hem de Compose kullanılıyorsa emojileri doğru şekilde yapılandırmak için uygun API'leri kullandığınızdan emin olun. Aşağıdaki bölümlerde her bir API'nin ne zaman kullanılacağı açıklanmaktadır.
ComponentActivity
tarihinden itibaren uzatıldı
Activity
, AppCompatActivity
yerine Compose ComponentActivity
'dan genişliyorsa AppCompat olmadan emoji desteği talimatlarını uygulayın.
AppCompatActivity
öğesini genişletmediğiniz için bağımlılıklarınıza Emoji2
kitaplığını ekleyin ve aşağıdaki snippet'te gösterildiği gibi görünümlerinizde TextView
widget'ı yerine EmojiTextView
öğesini kullanın:
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: EmojiTextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
Ardından, XML dosyanızda:
<androidx.emoji2.widget.EmojiTextView android:id="@+id/emoji_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
AppCompatActivity
tarihinden itibaren uzatıldı
Activity
, AppCompatActivity
öğesinden türetilmişse composable işlevleri çağırmak için ComposeView
kullanabilirsiniz. Text composable'ları kullandığınızda emojiler Android sürümlerinde doğru şekilde oluşturulur.
AppCompatActivity
'dan genişletiyorsanız emojilerin doğru şekilde oluşturulması için TextView
öğesini XML'den genişletin.
Bu, XML'yi şişiriyorsanız geçerlidir:
ComposeView
dışında,Activity
içinde. Aşağıdaki snippet'teAppCompatActivity
veTextView
kullanımına dikkat edin:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: TextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
ComposeView
içinde, aşağıdaki snippet'te olduğu gibi görünüm bağlama aracılığıylaAndroidViewBinding
kullanarak:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidViewBinding(ExampleViewBinding::inflate) { emojiTextView.text = EMOJI_TEXT } } } } ) } }
ComposeView
içinde AndroidView
ile metin şişirmek için, emojileri doğru şekilde oluşturmak üzere
AppCompatTextView
kullanın:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidView( factory = { context -> AppCompatTextView(context) }, update = { it.text = EMOJI_TEXT } ) } } } ) } }
Ayrıntılar için Birlikte Çalışabilirlik API'leri dokümanlarına bakın.
Sorun giderme
Emoji yerine tofu (☐) görüyorsanız öncelikle sorunun test cihazınıza özgü olup olmadığını kontrol edin. Kontrol edebileceğiniz birkaç ana nokta vardır:
- Yakın zamanda flash'lenen bir cihaz veya yeni bir emülatör kullanıyor olabilirsiniz. Mümkünse Google Hesabınızda oturum açmış, sık kullandığınız başka bir gerçek test cihazı deneyin. Emojilerin doğru sürümlerde çalışmasını sağlamak için API'nin 30 veya daha düşük olması gerektiğini unutmayın.
- Test telefonu indirilebilir yazı tiplerini desteklemiyor.
- Doğru Google Play Hizmetleri sürümünü kontrol edin.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir.
- Diğer dikkat edilmesi gereken noktalar
- Oluşturma modunda metin
- Kaydırma