İndirilebilir Yazı Tipleri özelliği, API'lerin dosyaları uygulamaya dahil etmek veya uygulamanın yazı tiplerini indirmesine izin vermek yerine bir sağlayıcı uygulamasından yazı tipi istemesine olanak tanır. İndirilebilir yazı tipleri, AndroidX Core kitaplığı aracılığıyla Android API 14 ve sonraki sürümleri çalıştıran cihazlarda kullanılabilir.
İndirilebilir yazı tipleri aşağıdaki avantajları sunar:
- Uygulama boyutunu küçülterek uygulama yükleme başarı oranını artırır.
- Birden fazla uygulama bir sağlayıcı aracılığıyla aynı yazı tipini paylaşabildiğinden genel sistem sağlığını iyileştirir. Bu sayede kullanıcılar hücresel veri, telefon belleği ve disk alanı tasarrufu sağlar. Bu modelde, yazı tipi gerektiğinde ağ üzerinden getirilir.
İndirilebilir yazı tipleri nasıl çalışır?
Yazı tipi sağlayıcı, diğer uygulamaların yazı tiplerini isteyip paylaşabilmesi için yazı tiplerini alıp yerel olarak önbelleğe alan bir uygulamadır. Aşağıdaki şekilde bu süreç gösterilmektedir.
Temel bilgiler
İndirilebilir Yazı Tipleri özelliğini aşağıdaki şekillerde kullanabilirsiniz. Bu şekiller sonraki bölümlerde ayrıntılı olarak açıklanmıştır:
İndirilebilir yazı tiplerini Android Studio ve Google Play Hizmetleri ile kullanma
Android Studio 3.0 veya sonraki sürümleri kullanarak uygulamanızı yazı tiplerini indirecek şekilde ayarlayabilirsiniz. İndirilebilir yazı tipleri özelliklerini kullanmaya başlamanıza yardımcı olması için Google Play Hizmetleri'ndeki yazı tipi sağlayıcıyı kullanabilirsiniz.
- Düzen Düzenleyici'de bir
TextView
seçin. Ardından, Özellikler bölümünde fontFamily > Diğer Yazı Tipleri'ni seçin. Kaynaklar penceresi görünür. - Kaynak menüsünde Google Fonts'u seçin.
- Yazı tipleri kutusunda, "İndirilebilir" alanından bir yazı tipi seçin.
- İndirilebilir yazı tipi oluştur'u seçin ve Tamam'ı tıklayın.
Android Studio, yazı tipini uygulamanızda doğru şekilde oluşturmak için gereken ilgili XML dosyalarını otomatik olarak oluşturur.
İndirilebilir yazı tiplerini programatik olarak kullanma
Android 8.0 (API düzeyi 26) itibarıyla AndroidX Core, indirilebilir yazı tipleri için tam destek sunar. AndroidX Core kitaplığının kullanımı hakkında daha fazla bilgi için bu sayfadaki İndirilebilir Yazı Tipleri AndroidX Core kitaplığı bölümüne bakın.
İndirilebilir Yazı Tipleri özelliğini programatik olarak kullanmak için iki temel sınıfla etkileşime geçin:
android.graphics.fonts.FontRequest
: Bu sınıf, yazı tipi isteği oluşturmanıza olanak tanır.FontsContractCompat
: Bu sınıf, yazı tipi isteğine göre yeni birTypeface
nesnesi oluşturmanıza olanak tanır.
Uygulamanız, FontsContract
API'sini kullanarak yazı tiplerini yazı tipi sağlayıcıdan alır. Her sağlayıcının desteklediği Android sürümleri ve sorgu dili ile ilgili kendi kısıtlamaları vardır. Android sürümleri ve sorgu biçimi hakkında daha fazla bilgi için sağlayıcınızın dokümanlarına bakın.
Bir yazı tipini indirmek için aşağıdaki adımları uygulayın:
- Sağlayıcıdan yazı tipini istemek için
android.graphics.fonts.FontRequest
sınıfının bir örneğini oluşturun. İstek oluşturmak için aşağıdaki parametreleri iletin:- Yazı tipi sağlayıcı yetkilisi.
- Sağlayıcının kimliğini doğrulamak için yazı tipi sağlayıcı paketi.
- Yazı tipinin dize sorgusu. Sorgu biçimleri hakkında daha fazla bilgi için yazı tipi sağlayıcınızın (ör. Google Yazı Tipleri) belgelerine bakın.
- Sağlayıcının kimliğini doğrulamak için sertifikalara ait karma oluşturma işlemleri gruplarının listesi.
Kotlin
val request = FontRequest( "com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs )
Java
FontRequest request = new FontRequest("com.example.fontprovider", "com.example.fontprovider", "my font", certs);
FontsContract.FontRequestCallback
sınıfının bir örneğini oluşturun.- Yazı tipi isteğinin tamamlandığını belirtmek için
onTypefaceRetrieved()
yöntemini geçersiz kılın. Parametre olarak alınan yazı tipini sağlayın. Yazı tipini gerektiği gibi ayarlamak için bu yöntemi kullanabilirsiniz. Örneğin, birTextView
öğesinin yazı tipini ayarlayabilirsiniz. - Yazı tipi istek sürecindeki hatalar hakkında bilgi almak için
onTypefaceRequestFailed()
yöntemini geçersiz kılın. Hata kodları hakkında daha fazla bilgi için hata kodu sabitlerine bakın. - Yazı tipini yazı tipi sağlayıcıdan almak için
FontsContract.requestFont()
yöntemini çağırın. Yöntem, yazı tipinin önbellekte bulunup bulunmadığını belirlemek için bir kontrol başlatır. Yazı tipi yerel olarak kullanılamıyorsa yazı tipi sağlayıcıyı çağırır, yazı tipini asenkron olarak alır ve sonucu geri çağırma işlevine iletir. Aşağıdaki parametreleri iletin:Context
sınıfının bir örneğiandroid.graphics.fonts.FontRequest
sınıfının bir örneği- Yazı tipi isteğinin sonuçlarını almak için geri çağırma işlevi
- Bir ileti dizisindeki yazı tiplerini getiren işleyici
Aşağıdaki örnek kod, indirilebilir yazı tipleri sürecini genel olarak göstermektedir:
Kotlin
val request = FontRequest( "com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs ) val callback = object : FontsContract.FontRequestCallback() { override fun onTypefaceRetrieved(typeface: Typeface) { // Your code to use the font goes here. ... } override fun onTypefaceRequestFailed(reason: Int) { // Your code to deal with the failure goes here. ... } } FontsContract.requestFonts(context, request, handler, null, callback)
Java
FontRequest request = new FontRequest("com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs); FontsContract.FontRequestCallback callback = new FontsContract.FontRequestCallback() { @Override public void onTypefaceRetrieved(Typeface typeface) { // Your code to use the font goes here. ... } @Override public void onTypefaceRequestFailed(int reason) { // Your code to deal with the failure goes here. ... } }; FontsContract.requestFonts(context, request, handler, null, callback);
Bir yazı tipi sağlayıcıdan yazı tipi indirme hakkında daha fazla bilgi için DownloadableFonts örnek uygulamasına bakın.
AndroidX Core ile indirilebilir yazı tiplerini kullanma
AndroidX Core, Android API 14 veya sonraki sürümleri çalıştıran cihazlarda İndirilebilir Yazı Tipleri özelliğini destekler. androidx.core.provider
paketi, geriye dönük olarak uyumlu İndirilebilir Yazı Tipleri özelliği desteğini uygulamak için FontsContractCompat
ve FontRequest
sınıflarını içerir. AndroidX sınıfları, çerçeve yöntemlerine benzer yöntemler içerir ve yazı tiplerini indirme işlemi, bu sayfada indirilebilir yazı tiplerini programatik olarak kullanma ile ilgili bölümde açıklanan işleme benzer.
AndroidX'i kullanarak yazı tiplerini indirmek için androidx.core.provider
paketinden FontsContractCompat
ve FontRequest
sınıflarını içe aktarın. FontsContract
ve android.graphics.fonts.FontRequest
çerçeve sınıfları yerine bu sınıfların örneklerini oluşturun.
AndroidX Core bağımlılık ekleme
FontsContractCompat
ve FontRequest
sınıflarını kullanmak için uygulama projenizin sınıf yolu bağımlılıkları geliştirme ortamınızda değiştirilmelidir.
AndroidX Core'u uygulama projenize eklemek için uygulamanızın build.gradle
dosyasına aşağıdaki bağımlılığı ekleyin:
Groovy
dependencies { ... implementation "androidx.core:core-ktx:2.2.0" }
Kotlin
dependencies { ... implementation("androidx.core:core-ktx:2.2.0") }
İndirilebilir yazı tiplerini XML'de kaynak olarak kullanma
Android 8.0 (API düzeyi 26) ve AndroidX Core, XML düzeninde özel bir yazı tipini kaynak olarak belirtmenin daha hızlı ve daha kolay bir yolunu sunar. Bu nedenle, yazı tipini öğe olarak paketlemeniz gerekmez. Temanızın tamamı için özel bir yazı tipi tanımlayabilirsiniz. Bu, sağlandığında kalın, orta veya ince gibi birden fazla ağırlık ve stil için kullanılabilirliği hızlandırır.
res/font
klasöründe yeni bir XML dosyası oluşturun.- Aşağıdaki örnek XML dosyasında gösterildiği gibi bir
<font-family>
kök öğesi ekleyin ve yazı tipiyle ilgili özellikleri ayarlayın: - Dosyaya, sayfa düzeni XML dosyasında
@font/font_file_name
olarak referans verin. Dosyayı programatik olarak almak içingetFont()
yöntemini de kullanabilirsiniz. Örneğin,getFont(R.font.font_file_name)
.
<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android" android:fontProviderAuthority="com.example.fontprovider.authority" android:fontProviderPackage="com.example.fontprovider" android:fontProviderQuery="example font" android:fontProviderCerts="@array/certs"> </font-family>
Yazı tiplerini manifest'te önceden tanımlama
İçerik oluşturma ve kaynak getirme işlemleri senkronize görevlerdir. Varsayılan olarak, yazı tiplerini almayla ilgili ilk deneme yazı tipi sağlayıcıya bir istek gönderir ve bu nedenle ilk düzen süresi artar. Gecikmeyi önlemek için, alınması gereken yazı tiplerini manifest dosyanızda önceden bildirebilirsiniz. Sistem, yazı tipini sağlayıcıdan aldıktan sonra yazı tipi hemen kullanılabilir. Yazı tipi getirme işlemi beklenenden uzun sürerse sistem getirme işlemini iptal eder ve varsayılan yazı tipini kullanır.
Yazı tiplerini manifest dosyasında önceden bildirmek için aşağıdaki adımları tamamlayın:
res/values/arrays.xml
içinde bir resources dizisi oluşturun ve önceden almak istediğiniz yazı tiplerini bildirin.- Manifest dosyanızdaki kaynak dizisini bildirmek için
meta-data
etiketi kullanın.
res/values/arrays.xml <?xml version="1.0" encoding="utf-8"?> <resources> <array name="preloaded_fonts"> <item>@font/font1</item> <item>@font/font2</item> </array> </resources>
<meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
Sertifika ekleme
Bir yazı tipi sağlayıcı önceden yüklü değilse veya AndroidX Core kitaplığını kullanıyorsanız yazı tipi sağlayıcının imzalandığı sertifikaları belirtin. Sistem, yazı tipi sağlayıcının kimliğini doğrulamak için sertifikaları kullanır.
Sertifika eklemek için aşağıdaki adımları uygulayın:
- Sertifika ayrıntılarını içeren bir dize dizisi oluşturun. Sertifika ayrıntıları hakkında daha fazla bilgi edinmek için yazı tipi sağlayıcınızın dokümanlarına bakın.
fontProviderCerts
özelliğini dizi olarak ayarlayın.
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="certs"> <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item> </string-array> </resources>
android:fontProviderCerts="@array/certs"