İndirilebilir Yazı Tipleri özelliği, API'lerin dosyaları uygulamaya gruplandırmak veya uygulamanın yazı tiplerini indirmesine izin vermek yerine sağlayıcı uygulamasından yazı tipi istemesine olanak tanır. İndirilebilir Yazı Tipleri, AndroidX Core kitaplığı üzerinden Android API 14 ve sonraki sürümlerini ç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, kullanıcılara hücresel veri, telefon belleği ve disk alanından tasarruf etmenizi sağlar. Bu modelde, yazı tipi gerektiğinde ağ üzerinden getirilir.
İndirilebilir Yazı Tipleri nasıl çalışır?
Yazı tipi sağlayıcısı, diğer uygulamaların yazı tipleri isteyip paylaşabilmesi için yazı tiplerini alan ve bunları yerel olarak önbelleğe alan bir uygulamadır. Aşağıdaki şekilde süreç gösterilmektedir.
Temel bilgiler
İndirilebilir Yazı Tipleri özelliğini, daha sonraki bölümlerde ayrıntılı olarak ele alınacak olan aşağıdaki şekillerde kullanabilirsiniz:
- Android Studio ve Google Play Hizmetleri'ni kullanma
- Programatik olarak
- AndroidX Core kitaplığını kullanma
Android Studio ve Google Play Hizmetleri ile İndirilebilir Yazı Tiplerini kullanma
Uygulamanızı, Android Studio 3.0 veya sonraki sürümleri kullanarak yazı tiplerini indirecek şekilde ayarlayabilirsiniz. İndirilebilir Yazı Tipleri özelliklerini kullanmaya başlamanıza yardımcı olması için Google Play hizmetlerindeki yazı tipi sağlayıcısını 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ünden Google Fonts'u seçin.
- Yazı tipleri kutusundaki "İndirilebilir" alanı altından bir yazı tipi seçin.
- İndirilebilir yazı tipi oluştur'u seçip 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) sürümünden itibaren AndroidX Core, İndirilebilir Yazı Tipleri için tam destek sağlamaktadır. AndroidX Core kitaplığını kullanma 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şim kurun:
android.graphics.fonts.FontRequest
: Bu sınıf, yazı tipi isteği oluşturmanızı sağlar.FontsContractCompat
: Bu sınıf, yazı tipi isteğine göre yeni birTypeface
nesnesi oluşturmanızı sağlar.
Uygulamanız, yazı tiplerini yazı tipi sağlayıcısından FontsContract
API'sini kullanarak alır. Her sağlayıcının, desteklediği Android sürümleri ve sorgu dili konusunda 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 belgelerine bakın.
Bir yazı tipini indirmek için aşağıdaki adımları uygulayın:
- Yazı tipini sağlayıcıdan 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ısı yetkilisi.
- Sağlayıcının kimliğini doğrulamak için kullanılacak 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 Google Fonts gibi dokümanlarına bakın.
- Sağlayıcının kimliğini doğrulamak için kullanılan sertifikaların karma 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. Alınan yazı tipini parametre olarak sağlayın. Yazı tipini gerektiği gibi ayarlamak için bu yöntemi kullanabilirsiniz. Örneğin,TextView
öğesinde yazı tipini ayarlayabilirsiniz. - Yazı tipi isteği 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ısından almak için
FontsContract.requestFont()
yöntemini çağırın. Yöntem, yazı tipinin önbellekte olup olmadığını belirlemek için bir kontrol başlatır. Yazı tipi yerel olarak kullanılamıyorsa yazı tipi sağlayıcısını çağırır, yazı tipini eşzamansız olarak alır ve sonucu geri çağırmaya 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 bir geri çağırma
- İleti dizisindeki yazı tiplerini getiren işleyici
Aşağıdaki örnek kod, genel İndirilebilir Yazı Tipleri işlemini 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ısından yazı tipi indirme hakkında daha fazla bilgi için DownloadableFonts örnek uygulamasına bakın.
AndroidX Core ile İndirilebilir Yazı Tiplerini Kullanma
AndroidX Core, Android API 14 veya sonraki sürümlerini çalıştıran cihazlarda İndirilebilir Yazı Tipleri özelliğini destekler. androidx.core.provider
paketi, geriye dönük uyumlu İndirilebilir Yazı Tipleri özellik 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 sayfadaki İndirilebilir Yazı Tiplerini programatik olarak kullanma bölümünde açıklanana benzer.
Yazı tiplerini AndroidX kullanarak 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ığı ekleyin
FontsContractCompat
ve FontRequest
sınıflarını kullanmak için geliştirme ortamınızda uygulama projenizin sınıf yolu bağımlılıklarını değiştirmeniz gerekir.
AndroidX Core'u uygulama projenize eklemek için uygulamanızın build.gradle
dosyasına aşağıdaki bağımlılığı ekleyin:
Modern
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 kullanın
Android 8.0 (API düzeyi 26) ve AndroidX Core, özel bir yazı tipini XML düzeninde bir kaynak olarak tanımlamanın daha hızlı ve daha kolay bir yolunu sunar. Bu, yazı tipini bir öğe olarak gruplandırmaya gerek olmadığı anlamına gelir. Temanız için özel bir yazı tipi tanımlayabilirsiniz. Bu yazı tipi, sağlandığında kalın, orta veya açık 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, düzen XML dosyasında
@font/font_file_name
olarak bakın. Dosyayı programatik olarak almak içingetFont(R.font.font_file_name)
gibigetFont()
yöntemini de kullanabilirsiniz.
<?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>
Manifest'teki yazı tiplerini önceden belirtme
Düzen şişirme ve kaynak alma eşzamanlı görevlerdir. Varsayılan olarak, yazı tiplerini ilk alma girişimi, yazı tipi sağlayıcısına bir istek gönderilmesini tetikler ve bu nedenle ilk düzen süresini artırır. Gecikmeyi önlemek için manifest dosyanıza alınması gereken yazı tiplerini önceden bildirebilirsiniz. Sistem, sağlayıcıdan yazı tipini aldıktan sonra yazı tipini hemen kullanabilir. Yazı tipini alma işlemi beklenenden daha uzun sürerse sistem, getirme işlemini iptal eder ve varsayılan yazı tipini kullanır.
Manifest'teki yazı tiplerini önceden bildirmek için aşağıdaki adımları tamamlayın:
res/values/arrays.xml
konumunda bir kaynak dizisi oluşturun ve önceden getirmek istediğiniz yazı tiplerini tanımlayın.- Manifest'inizde kaynak dizisini tanımlamak 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 ekle
Bir yazı tipi sağlayıcı önceden yüklenmemişse veya AndroidX Core kitaplığını kullanıyorsanız yazı tipi sağlayıcının imzalandığı sertifikaları bildirin. Sistem, yazı tipi sağlayıcısı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 için yazı tipi sağlayıcınızın belgelerine bakın.
fontProviderCerts
özelliğini diziye ayarlayın.
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="certs"> <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item> </string-array> </resources>
android:fontProviderCerts="@array/certs"
Oluşturma işleminde İndirilebilir Yazı Tipleri
Compose 1.2-alpha07'den başlayarak, Google Fonts'u eşzamansız olarak indirmek için Compose uygulamanızda Downloadable Fonts API'yi kullanabilir ve bunları uygulamanızda kullanabilirsiniz. Daha fazla bilgi için İndirilebilir Yazı Tipleri Oluşturma belgelerine bakın.